好比下面這樣一個網頁,須要進行拖動下拉條後才能經過selenium找到密碼輸入框的元素,web
在python中有幾種方法解決這種問題,簡單介紹下,給須要的人:框架
方法一)使用js腳本直接操做,方法以下:ide
js="var q=document.getElementById('id').scrollTop=10000" driver.execute_script(js)
或:post
js="var q=document.documentElement.scrollTop=10000" driver.execute_script(js)
這裏的id爲滾動條的id,但js中沒有xpath的方法,因此滾動條沒有id的網頁此方法不適用code
方法二)使用js腳本拖動到提定地方blog
target = driver.find_element_by_id("id_keypair") driver.execute_script("arguments[0].scrollIntoView();", target) #拖動到可見的元素去
這個方法能夠將滾動條拖動到須要顯示的元素位置,此方法用途比較廣,能夠使用ip
方法三)根據頁面顯示進行變通,發送tab鍵element
在本例中的頁面中,密碼是輸入框,正常手工操做時,能夠經過tab鍵會切換到密碼框中,因此根據此思路,在python中也能夠發送tab鍵來切換,使元素顯示get
from selenium.webdriver.common.keys import Keys
driver.find_element_by_id("id_login_method_0").send_keys(Keys.TAB)
update
前段時間使用robotframe work框架時,selenium2library裏面有一個很是好用的功能Focus,會自動定位到元素,研讀一下源碼:
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)