python中selenium操作下拉滾動(dòng)條的幾種方法匯總
UI自動(dòng)化中經(jīng)常會(huì)遇到元素識(shí)別不到,找不到的問(wèn)題,原因有很多,比如不在iframe里,xpath或id寫(xiě)錯(cuò)了等等;但有一種是在當(dāng)前顯示的頁(yè)面元素不可見(jiàn),拖動(dòng)下拉條后元素就出來(lái)了。
比如下面這樣一個(gè)網(wǎng)頁(yè),需要進(jìn)行拖動(dòng)下拉條后才能通過(guò)selenium找到密碼輸入框的元素,


在python中有幾種方法解決這種問(wèn)題,簡(jiǎn)單介紹下,給需要的人:
方法一)使用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中沒(méi)有xpath的方法,所以滾動(dòng)條沒(méi)有id的網(wǎng)頁(yè)此方法不適用
方法二)使用js腳本拖動(dòng)到提定地方
target = driver.find_element_by_id("id_keypair")
driver.execute_script("arguments[0].scrollIntoView();", target) #拖動(dòng)到可見(jiàn)的元素去
這個(gè)方法可以將滾動(dòng)條拖動(dòng)到需要顯示的元素位置,此方法用途比較廣,可以使用
方法三)根據(jù)頁(yè)面顯示進(jìn)行變通,發(fā)送tab鍵
在本例中的頁(yè)面中,密碼是輸入框,正常手工操作時(shí),可以通過(guò)tab鍵會(huì)切換到密碼框中,所以根據(jù)此思路,在python中也可以發(fā)送tab鍵來(lái)切換,使元素顯示
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自己寫(xiě)的方法二)一致,工具給我們做了封裝。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python中的selenium實(shí)現(xiàn)自動(dòng)向下滾動(dòng)頁(yè)面并指定最大滑動(dòng)距離
- Selenium及python實(shí)現(xiàn)滾動(dòng)操作多種方法
- Selenium基于PIL實(shí)現(xiàn)拼接滾動(dòng)截圖
- Selenium 滾動(dòng)頁(yè)面至元素可見(jiàn)的方法
- 淺談selenium如何應(yīng)對(duì)網(wǎng)頁(yè)內(nèi)容需要鼠標(biāo)滾動(dòng)加載的問(wèn)題
- Python Selenium 滾動(dòng)到特定元素的幾種實(shí)現(xiàn)方法
相關(guān)文章
Django Rest framework認(rèn)證組件詳細(xì)用法
這篇文章主要介紹了Django Rest framework認(rèn)證組件詳細(xì)用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
conda配置python虛擬環(huán)境的實(shí)現(xiàn)步驟
本文主要介紹了conda配置python虛擬環(huán)境的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
python實(shí)現(xiàn)圖像處理之PiL依賴庫(kù)的案例應(yīng)用詳解
這篇文章主要介紹了python實(shí)現(xiàn)圖像處理之PiL依賴庫(kù)的案例應(yīng)用詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
python讀取nc數(shù)據(jù)并繪圖的方法實(shí)例
最近項(xiàng)目中需要處理和分析NC數(shù)據(jù),所以下面這篇文章主要給大家介紹了關(guān)于python讀取nc數(shù)據(jù)并繪圖的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05
Selenium執(zhí)行完畢未關(guān)閉chromedriver/geckodriver進(jìn)程的解決辦法(java版+python版
這篇文章主要介紹了Selenium執(zhí)行完畢未關(guān)閉chromedriver/geckodriver進(jìn)程的解決辦法(java版+python版),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
利用python實(shí)現(xiàn)凱撒密碼加解密功能
這篇文章主要介紹了利用python實(shí)現(xiàn)凱撒密碼加解密功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
python基于socket實(shí)現(xiàn)網(wǎng)絡(luò)廣播的方法
這篇文章主要介紹了python基于socket實(shí)現(xiàn)網(wǎng)絡(luò)廣播的方法,涉及Python操作socket的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04

