Web UI自动化测试-滚动条操作

"""
大多数网页,页面内容超多自动出现了滚动条,通过代码找到元素后即可操作 因为它会自动滚动到元素可见位置。
有些不会自动滚动的页面 就需要用代码操作滚动条
滚动的目的:将你要操作的元素,滚动到可视区域后,再操作。
滚动不是滚动的右侧滚动条,而是把元素滚动到可视区域 滚的是元素。
前端开发中 动态效果是由js实现的,所以这个滚动的动作也是js实现的
python中执行js语句用函数execute_script()
很多的网页,是会自己滚的。如何检测:直接不滚动去操作滚动条最下方数据 看能否操作 能就是自动滚的 试下淘宝 京东
"""
#示例百度首页搜索“柠檬班”,搜索结果中点击一个页面要翻页才能看到的链接元素
from selenium.webdriver.common.keys import Keys

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

driver = webdriver.Chrome()
# driver.maximize_window()

driver.get("http://www.baidu.com")

driver.find_element_by_id("kw").send_keys("柠檬班",Keys.ENTER)

# 等待搜索结果出现
loc = (By.XPATH,'//a[contains(text(), "知乎")]')
WebDriverWait(driver,10).until(EC.visibility_of_element_located(loc))
# 找到要滚动的元素
ele = driver.find_element(*loc)

# 先滚动到可视区域后,
#操作滚动条要用java script(js)语句,python中执行js的函数为execute_script()
# def execute_script(self, script, *args): 参数1:javascript脚本 参数2-n:传给js脚本的参数
#element.scrollIntoView(); #js中用来将某元素滚动到可见区域的语句,注意要引号 分号
# js脚本当中,用什么来接收外部的参数?arguments 是个列表。
# js脚本当中,什么函数来滚动页面呢?scrollIntoView()
# scrollIntoView() 元素与页面顶部对齐 如果顶部有个遮罩层 就可能看不到。scrollIntoView(false) 与页面底部对齐
driver.execute_script("arguments[0].scrollIntoView(false);", ele)#滚动到元素出现在页面底部 常用固定用法 记!
# driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")

time.sleep(2)
# 再去点击
ele.click()

"""
直接滚动到页面底部 (常用于要用翻页控件):
driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
直接滚动到页面顶部:
driver.execute_script("window.scrollTo(document.body.scrollHeight,0)")

"""
posted @ 2020-07-23 11:30  菜鸟到大佬  阅读(2211)  评论(0编辑  收藏  举报