[489]selenium的一些js操作

控制滚动条高度

1.滚动条回到顶部:

js="var q=document.getElementById('id').scrollTop=0"
driver.execute_script(js) 

2.滚动条拉到底部

js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)

3.这里可以修改scrollTop 的值,来定位右侧滚动条的位置,0是最上面,10000是最底部。

横向滚动条

1.有时候浏览器页面需要左右滚动(一般屏幕最大化后,左右滚动的情况已经很少见了)。

2.通过左边控制横向和纵向滚动条scrollTo(x, y)

js = "window.scrollTo(100,400);"
driver.execute_script(js)

3.第一个参数x是横向距离,第二个参数y是纵向距离

1.以上方法在Firefox上是可以的,但是用Chrome浏览器,发现不管用。
谷歌浏览器就是这么任性,不听话,于是用以下方法解决谷歌浏览器滚动条的问题。

2.Chrome浏览器解决办法:

js = "var q=document.body.scrollTop=0"
driver.execute_script(js)

元素聚焦

1.虽然用上面的方法可以解决拖动滚动条的位置问题,但是有时候无法确定我需要操作的元素

在什么位置,有可能每次打开的页面不一样,元素所在的位置也不一样,怎么办呢?

2.这个时候我们可以先让页面直接跳到元素出现的位置,然后就可以操作了。同样需要借助JS去实现。
3.元素聚焦:

target = driver.find_element_by_xxxx()
driver.execute_script("arguments[0].scrollIntoView();", target)

将页面的滚动条拖到最下方,然后再拖回顶部

    driver.execute_script("""
                (function () {
                    var y = 0;
                    var step = 100;
                    window.scroll(0, 0);

                    function f() {
                        if (y < document.body.scrollHeight) {
                            y += step;
                            window.scroll(0, y);
                            setTimeout(f, 100);
                        } else {
                            window.scroll(0, 0);
                            document.title += "scroll-done";
                        }
                    }

                    setTimeout(f, 1000);
                })();
            """)
    for i in range(30):
        if "scroll-done" in driver.title:
            break
        time.sleep(10)

参考:https://blog.csdn.net/hbhcxs/article/details/73079494

你可能感兴趣的:(爬虫)