python滚动条_python中selenium操作下拉滚动条的几种方法汇总
UI自動(dòng)化中經(jīng)常會(huì)遇到元素識(shí)別不到,找不到的問題,原因有很多,比如不在iframe里,xpath或id寫錯(cuò)了等等;但有一種是在當(dāng)前顯示的頁面元素不可見,拖動(dòng)下拉條后元素就出來了。
比如下面這樣一個(gè)網(wǎng)頁,需要進(jìn)行拖動(dòng)下拉條后才能通過selenium找到密碼輸入框的元素,
在python中有幾種方法解決這種問題,簡單介紹下,給需要的人:
方法一)使用js腳本直接操作,方法如下:
js="var q=document.getElementById('id').scrollTop=10000"
driver.execute_script(js)
或:
js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
這里的id為滾動(dòng)條的id,但js中沒有xpath的方法,所以滾動(dòng)條沒有id的網(wǎng)頁此方法不適用
方法二)使用js腳本拖動(dòng)到提定地方
target = driver.find_element_by_id("id_keypair")
driver.execute_script("arguments[0].scrollIntoView();", target) #拖動(dòng)到可見的元素去
這個(gè)方法可以將滾動(dòng)條拖動(dòng)到需要顯示的元素位置,此方法用途比較廣,可以使用
方法三)根據(jù)頁面顯示進(jìn)行變通,發(fā)送tab鍵
在本例中的頁面中,密碼是輸入框,正常手工操作時(shí),可以通過tab鍵會(huì)切換到密碼框中,所以根據(jù)此思路,在python中也可以發(fā)送tab鍵來切換,使元素顯示
from selenium.webdriver.common.keys import Keys
driver.find_element_by_id("id_login_method_0").send_keys(Keys.TAB)
update
前段時(shí)間使用robotframe work框架時(shí),selenium2library里面有一個(gè)非常好用的功能Focus,會(huì)自動(dòng)定位到元素,研讀一下源碼:
def focus(self, locator):
"""Sets focus to element identified by `locator`."""
element = self._element_find(locator, True, True)
self._current_browser().execute_script("arguments[0].focus();", element)
從源碼中我們可以看到,此方法與我們?cè)趐ython自己寫的方法二)一致,工具給我們做了封裝。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
總結(jié)
以上是生活随笔為你收集整理的python滚动条_python中selenium操作下拉滚动条的几种方法汇总的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 税收是财政政策还是货币政策
- 下一篇: python列表的实现原理_python