python-web自动化:滚动条

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

目前大多数页面不需要滚动就可以操作元素,如果你定位的元素可见,但是没有出现在屏幕可视区域,定位表达式也是正确的,那就试一下滚动到对应的元素再操作

"""

1、移动到元素element对象的底端与当前窗口的底部对齐:
driver.execute_script("arguments[0].scrollIntoView(false);",element)

2、移动到元素element对象的顶端与当前窗口的顶部对齐 :
driver.execute_script("arguments[0].scrollIntoView();",element)

3、移动到页面底部:
driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")

4、移动到页面顶部:
driver.execute_script("window.scrollTo(document.body.scrollHeight,
0)")

"""

# 1、等待
# 1、傻等 - 5 15
import time
time.sleep(2)

# 智能等待 - 如果说你下一行的代码当中用到的元素,那我就设置一个等待极限。
# 在这个极限范围之内,任何一个时间点元素出现了,就不等了,去执行下一行代码。

# 2、隐性等待 implicitly_wait

from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.implicitly_wait(30) # 等待元素存在、命令执行完成

driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("天气",Keys.ENTER)
# driver.find_element_by_id("su").click()

#要滚动的元素
loc = (By.XPATH,'//div[@id="4"]/h3[@class="t"]/a/em[text()="天气"]')
WebDriverWait(driver,20).until(EC.visibility_of_element_located(loc))
ele = driver.find_element(*loc)

driver.execute_script("arguments[0].scrollIntoView()",ele)

#ele.click()


实现效果


 # 带参数的 - js的参数来自于我们的python代码。 = 滚动条


多个参数时的传参格式
# ele = driver.find_element_by_xpath('//input[@class="date-txt"]')
# ele2 = driver.find_element_by_xpath("")
# driver.execute_script("arguments[0].value='XXX';arguments[1].value='XXX;'",ele,ele2)

 
原文地址:https://www.cnblogs.com/xintiaoab/p/13710777.html