虽然WebDriver提供了操作浏览器的前进和后退方法,但对于浏览器滚动条并没有提供相应的操作方法。在这种情况下,就可以借助JavaScript来控制浏览器的滚动条。WebDriver提供了execute_script()方法来执行JavaScript代码。
用于调整浏览器滚动条位置的JavaScript代码如下:
<!-- window.scrollTo(左边距,上边距); -->
window.scrollTo(0,450);
window.scrollTo()方法用于设置浏览器窗口滚动条的水平和垂直位置。方法的第一个参数表示水平的左间距,第二个参数表示垂直的上边距。其代码如下:
from selenium import webdriver
from time import sleep
# 访问百度
driver=webdriver.Firefox()
driver.get("http://www.baidu.com")
# 设置浏览器窗口大小
driver.set_window_size(500, 500)
# 搜索
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
sleep(2)
# 通过javascript设置浏览器窗口的滚动条位置
js="window.scrollTo(100,450);"
driver.execute_script(js)
sleep(3)
driver.quit()
通过浏览器打开百度进行搜索,并且提前通过set_window_size()方法将浏览器窗口设置为固定宽高显示,目的是让窗口出现水平和垂直滚动条。然后通过execute_script()方法执行JavaScripts代码来移动滚动条的位置。
driver.find_element_by_id("su").click()
这一句不知道为什么错,我改成了driver.find_element_by_id('su').send_keys(Keys.ENTER)
然后成功
ToT 创建于 2020-12-10 14:00:53
建议把设置窗口大小的步骤放到,执行搜索后、调用js前。防止分辨率引起的元素定位不到
Orange 创建于 2019-12-27 14:07:34
也可以不用调整窗口大小,用page ruler查处整个page的长度,js里面设置对应的尺寸就好啦 这样避免窗口调的太小找不到su而出错
ella 创建于 2019-11-21 19:36:01
driver.set_window_size(500, 500)这边窗口设置了大小,找不到搜素按钮的元素,所以报错,可以先把搜索操作做完再去调整窗口大小
天天向上-猪 创建于 2019-01-11 14:15:02
楼下的,报错的意思是su这个元素不能点哦
乙醇 创建于 2019-01-02 10:16:15
使用的是Chrom的浏览器驱动 上面的代码在 driver.find_element_by_id("su").click()这一句 处正对click()方法会提示下面的报错 raise exception_class(message, screen, stacktrace) selenium.common.exceptions.ElementNotVisibleException: Message: element not interactable
纤踏荪 创建于 2018-12-30 12:50:45