Selenium中JS处理滚动条

UI自动化中经常会遇到元素识别不到,找不到的问题,原因有很多,比如不在iframe里,xpath或id写错了等等;但有一种是在当前显示的页面元素不可见,拖动下拉条后元素就出来了。

用Python写路由器控制脚本的时候遇到这个问题,Selenium提示如下:

Message: Element is not clickable at point (1191.5, 143). Other element would receive the click: <div style="display: block; width: 100%; height: 911px; opacity: 0.15;" id="lock_div"></div>

翻译过来的字面意思大概是:元素在坐标(1191.5,143)处不可进行点击操作,其他元素或许会收到这个点击操作。(因元素被遮挡,或“不可见”)。

前言

什么是JS?

JS就是JavaScript;

一、JS处理滚动条问题

1、滚动条回到顶部:

js="var q=document.getElementById('id').scrollTop=0"

driver.execute_script(js)

或者

js="var q=document.documentElement.scrollTop=0"

driver.execute_script(js)

2、滚动条拉到底部:

js="var q=document.getElementById('id').scrollTop=10000"

driver.execute_script(js)

或者

js="var q=document.documentElement.scrollTop=10000"

driver.execute_script(js)

3、滚动条拉到指定位置(具体元素):--最常用

target = driver.find_element_by_id("id_keypair")

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

4、通过模拟键盘DOWN(↓)来拖动:

driver.find_element_by_id("id").send_keys(Keys.DOWN)

5、scrollTo函数

--scrollHeight 获取对象的滚动高度。 

--scrollLeft 设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离。 

--scrollTop 设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离。 

--scrollWidth 获取对象的滚动宽度。

#滚动到底部

js = "window.scrollTo(0,document.body.scrollHeight)"

driver.execute_script(js)

#滚动到顶部

js = "window.scrollTo(0,0)"

driver.execute_script(js)

二、参考代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File    : jss.py
# @Software: PyCharm
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
url = 'http://www.cnblogs.com/sanzangTst/'
browser = webdriver.Firefox()
browser.get(url)
time.sleep(3)
# 拉到底部
js="var q=document.documentElement.scrollTop=10000"
browser.execute_script(js)

# 回到顶部
js="var q=document.documentElement.scrollTop=0"
browser.execute_script(js)

# 拖到指定位置
target = browser.find_element_by_id("homepage1_HomePageDays_DaysList_ctl05_DayList_TitleUrl_0")
browser.execute_script("arguments[0].scrollIntoView();", target)

#滚动到底部
js = "window.scrollTo(0,document.body.scrollHeight)"
browser.execute_script(js)

#滚动到顶部
js = "window.scrollTo(0,0)"
browser.execute_script(js)

转:https://www.cnblogs.com/sanzangTst/p/7692285.html

猜你喜欢

转载自blog.csdn.net/qq_39247153/article/details/81902559