selenium操作下拉滚动条方法汇总
UI自动化中经常会遇到元素识别不到,找不到的问题,原因有很多,比如不在iframe里,xpath或id写错了等等;但有一种是在当前显示的页面元素不可见,拖动下拉条后元素就出来了。
方法一 使用js脚本直接操作
这里的id为滚动条的id,但js中没有xpath的方法,所以滚动条没有id的网页此方法不适用
js="var q=document.documentElement.scrollTop=10000"# 滚动到最下面
js="var q=document.documentElement.scrollTop=0"# 滚动到最上面
driver.execute_script(js)
方法二 使用js脚本拖动到提定地方
这个方法可以将滚动条拖动到需要显示的元素位置
target = driver.find_element_by_id("id_keypair")
driver.execute_script("arguments[0].scrollIntoView();", target)# 拖动到可见的元素去
方法三 根据页面显示进行变通,发送tab键
在本例中的页面中,密码是输入框,正常手工操作时,可以通过tab键会切换到密码框中,所以根据此思路,在python中也可以发送tab键来切换,使元素显示
from selenium.webdriver.common.keys import Keys
driver.find_element_by_id("id_login_method_0").send_keys(Keys.TAB)
方法四 鼠标移动到目标元素上方
from selenium.webdriver.common.action_chains import ActionChains
ActionChains(self.driver).move_to_element(element).perform()# 将鼠标移动到目标元素上方,适用于当前页面元素已加载完毕,但是在屏幕中看不到的情况。
方法五 滚动条操作
这个方法是从当前位置向下滚动100像素,而 window.scrollTo(0,100) 这个方法是从0滚动到100像素,这两个方法都是滚动操作,但是后面这个只会从0像素滚动到100像素,除非修改数值才可以滚动到对应像素位置,而我使用的则会一直向下滚动,希望不要弄混淆了。
defxh():
t =True
time.sleep(1)while t:
driver.execute_script("window.scrollBy(0,1000)")try:
driver.find_element('link_text','没有更多推荐了,返回首页').click()
time.sleep(1)
t =Falseexcept:
xh()if __name__ =='__main__':
driver = webdriver.Chrome()
driver.get("https://blog.csdn.net/sily_z/article/details/80733267")
版权归原作者 feiyu68 所有, 如有侵权,请联系我们删除。