selenium常用操作之JS处理滚动条操作

  selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了。

常见场景:

当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的。

这时候需要借助滚动条来拖动屏幕,使被操作的元素显示在当前的屏幕上。

滚动条是无法直接用定位工具来定位的。selenium里面也没有直接的方法去控制滚动条,

这时候只能借助JS了,selenium当中可以用execute_script()方法执行js的脚本。

语句:

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

execute_script("JS语句"

其中target为find_element_by_xx及我们要定位的元素。

所以滚动额步骤是:

1.通过selenium的定位元素方法找到该元素

2.通过执行JS脚本,将元素滚动到可见区域。

示例代码:

#定位要操作的元素
target_ele=driver.find_element_by_id("su")
#将元素滚动到可见区域
driver.excute_script("arguments[0].scrollIntoView();",target_ele)

几种滚动方式如下:

1.移动元素target_ele对象的顶端与当前窗口的顶部对齐:

driver.excute_script("arguments[0].scrollIntoView();",target_ele)
#或
driver.excute_script("arguments[0].scrollIntoView(true);",target_ele)

 

2.移动元素target_ele对象的底端与当前窗口的底部对齐:

driver.excute_script("arguments[0].scrollIntoView(false);",target_ele)

 

3.移动到页面底部

driver.execute_script("windows.scrollTo(0,document.body.scrollHeight)")

js="var q=document.getElementById('su').scrollTop=10000"
driver.execute_script(js)

4.移动到页面顶部

driver.execute_script("windows.scrollTo(document.body.scrollHeight,document.body.scrollHeight)")

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

  

5.横向滚动条

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

driver.execute_script("windows.scrollTo(100,400)")#第一个参数100是横向距离,第二个参数400是纵向距离

 

除了滚动的方式操作滚动条在某些特殊页面可以用tab键来切换焦点定位到元素,这个时候我们就可以用键盘的tanb键来实现定位。

示例代码:

from selenium.webdriver.common.keys import Keys
driver.find_element_by_id("id_login_method_0").send_keys(Keys.TAB)

  

posted @ 2020-03-13 15:33  吃个鱼丸  阅读(841)  评论(0编辑  收藏  举报