在用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) # 切回主窗口 以上是常用的三种方式,根据具体情况选择合适的方式。