在用selenuim爬取网站的过程中常常需要进行下拉条操作,在python中使用js联动是非常好的一个解决方法
# 定位到页面最底部
js = 'window.scrollTo(0, document.body.scrollHeight)'
driver.execute_script(js)
# 定位到页面最顶部
js = "document.documentElement.scrollTop=0"
driver.execute_script(js)
# 自定义定位到页面中间
js = "document.documentElement.scrollTop=xxx"
driver.execute_script(js)
(把xxx换成某个下来的数字就能实现下拉的效果,比如我写的是1200,则页面就会下拉1200个像素
# 移除页面元素(常用来清除小广告)
# 在网页的开发者模式中找到想要删除元素的位置,如果此元素以类名来区分,则用一下方法,记住
# 这是字典形式,需要在后面加个[],括号输入你想删除的是第一个class的类名,如果只要一个,就填0
js = '''
document.getElementsByClassName('类名')[0].remove();
document.getElementsByClassName('类名')[0].remove();
document.getElementsByClassName('类名')[0].remove();
driver.execute_script(js)
# 这是以id区分元素的方法
document.getElementById('id名称').remove();
下拉线滑到顶部和底部,和一些元素的删除操作# 定位到页面最底部js = 'window.scrollTo(0, document.body.scrollHeight)'driver.execute_script(js)# 定位到页面最顶部js = "document.documentElement.scrollTop=0"driver.execute_script(js)# 自定义定位到页面中间js = "docu
driver.execute_script(“arguments[0].%s=arguments[1]” %attributeName,elementObj, value)
driver.execute_script(“arguments[0].setAttribute(arguments[1],arg...
在编写自动化程序的时候,会遇到弹出新窗口的情况,而程序总是默认在第一个窗口页
定位
元素
,这样,就会
定位
不到
元素
,程序报错。
举一个实例说明,如下的网站在第一窗口
页面
点击“登陆”,会弹出一个新的窗口页输入用户名/密码,如果程序不做出来,在
定位
用户名的时候,程序会在第一个窗口页中查询,所以会报错
要解决这个
问题
有两种方法:
首先,弄明白为什么点击“登录”按钮会弹出一个新的窗口,下面我们来检查一...
时间日期控件处理:本质上是input框,用
js
把禁止输入的readonly属性干掉
js
= "document.getElementById('startTime').removeAttribute('readonly')" # 1.原生
js
,移除属性
#
js
= "$('input[id=startTime]').removeAttr('readonly')" # 2.jQuery,移除属性
#
js
= "$(..
JavascriptExecutor
js
_gold = (JavascriptExecutor) dr;
String
js
= "var elem = document.getElementsByClassName('mui-mbar-default')[0];"
+ "elem.parentNode.removeChild(elem); ";
js
_gold.
在
Selenium
中,可以使用以下方式来
定位
子
页面
的
元素
:
1. 使用相对路径:可以使用相对路径来
定位
子
页面
的
元素
,例如先
定位
到子
页面
的父
元素
,然后使用相对路径来
定位
子
元素
,示例如下:
parent_element = driver.find_element_by_id("parent_element_id")
child_element = parent_element.find_element_by_xpath(".//child_element_xpath")
2. 使用frame或iframe:如果子
页面
是一个iframe或frame,可以使用switch_to.frame()方法切换到子
页面
,然后再进行
元素
定位
,示例如下:
driver.switch_to.frame("frame_name_or_id")
element = driver.find_element_by_xpath("//element_xpath")
driver.switch_to.default_content() # 切回主
页面
3. 使用window_handles:如果子
页面
是一个新开的窗口,可以使用window_handles来切换到子
页面
,然后再进行
元素
定位
,示例如下:
main_window = driver.current_window_handle # 记录当前窗口句柄
# 打开新窗口并切换到新窗口
driver.execute_script("window.open('http://example.com');")
for handle in driver.window_handles:
if handle != main_window:
driver.switch_to.window(handle)
break
element = driver.find_element_by_xpath("//element_xpath")
driver.close() # 关闭子窗口
driver.switch_to.window(main_window) # 切回主窗口
以上是常用的三种方式,根据具体情况选择合适的方式。