多平台统一管理软件接口,如何实现多平台统一管理软件接口
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~