python之selenium操作下拉滚动条方法 || selenium之页面滚动至页面底部的数种解决方案(java selenium处理内嵌滚动条)

网友投稿 1515 2022-08-28


python之selenium操作下拉滚动条方法 || selenium之页面滚动至页面底部的数种解决方案(java selenium处理内嵌滚动条)

场景:元素在当前显示的页面不可见,拖动页面下拉直到该元素出现,此时才可以定位到该元素。

实例:

比如下面有一个网页,需要进行拖动页面下拉条后才能通过selenium找到密码输入框的元素:

拖动页面下拉条后:

方法①

使用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为滚动条的id属性,因为JavaScript中不存在xpath语法(JavaScript无法识别xpath元素定位),所以一旦滚动条没有id属性,则此方法无法使用。

方法②

使用JavaScript脚本将滚动条拖动到指定地方:

注意:使用该方法需要获取将滚动条拖动至指定的元素对象定位

target = driver.find_element_by_id("id_keypair") # 需要将滚动条拖动至的指定的元素对象定位driver.execute_script("arguments[0].scrollIntoView();", target) # 将滚动条拖动到元素可见的地方

该方法可以将页面滚动条拖动到需要显示的元素位置,此方法用途比较广,可以使用。

方法③

根据页面显示进行变通:

在本实例中的页面中,密码是输入框,正常手工操作时,可以通过tab键可以从用户框切换到密码框中,所以根据此思路,在python中也可以发送tab键来切换,使元素显示。

from selenium.webdriver.common.keys import Keys # 导入Keys类driver.find_element_by_id("id_login_method_0").send_keys(Keys.TAB) # 定位元素并操作输入

方法④

send_keys(Keys.END) 模拟向页面发送空格键

注意:发送空格键的元素应该是整个页面对象,比如说定位到页面body后进行操作

#coding=utf-8 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import WebDriverWait from selenium.common.exceptions import TimeoutException from selenium.webdriver.common.action_chains import ActionChains browser=webdriver.Chrome("G:/dj/chromedriver.exe") wait=WebDriverWait(browser,10) browser.set_window_size(1400,900) import time def search(): try: browser.get(" total=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,"body > div:nth-child(29)"))) for i in range(5): browser.find_element_by_tag_name('body').send_keys(Keys.Space) time.sleep(1) except TimeoutException: search() search()

方法⑤

使用鼠标操作

#coding=utf-8 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import WebDriverWait from selenium.common.exceptions import TimeoutException from selenium.webdriver.common.action_chains import ActionChains browser=webdriver.Chrome("G:/dj/chromedriver.exe") wait=WebDriverWait(browser,10) browser.set_window_size(1400,900) import time def search(): try: browser.get(" total=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,"body > div:nth-child(29)"))) target = browser.find_element_by_css_selector('body > div:nth-child(29)') actions = ActionChains(browser) actions.move_to_element(target) actions.perform() except TimeoutException: search() search()

拓展:

去期待陌生,去拥抱惊喜。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:将py文件打包成exe文件(python程序如何打包生成EXE文件)
下一篇:Java设计模式之原型模式的示例详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~