zoukankan      html  css  js  c++  java
  • selenium爬取网页内容知识点总结(代码均亲测可用)

    1.selenium获取网页iframe内容

    语法:driver.switch_to.frame(iframe)

    ①通过tag_name

    driver.get(url)
    #该iframe为页面的第几个iframe
    iframe = driver.find_elements_by_tag_name('iframe')[0]
    driver.switch_to.frame(iframe)

    ②通过iframe的id或class_name

    iframe = driver.find_element_by_id("iframe1")
    #iframe = driver.find_element_by_class_name("iframe1")
    driver.switch_to.frame(iframe)

    2.selenium控制鼠标悬停在某个位置

    #导包
    from
    selenium.webdriver.common.action_chains import ActionChains

    #ActionChains中的函数
    click(on_element=None)    #单击鼠标左键 click_and_hold(on_element=None)    #点击鼠标左键,按住不放 context_click(on_element=None) #点击鼠标右键 double_click(on_element=None) #双击鼠标左键 drag_and_drop(source, target) #拖拽到某个元素然后松开 drag_and_drop_by_offset(source, xoffset, yoffset) #拖拽到某个坐标然后松开 move_by_offset(xoffset, yoffset) #鼠标移动到距离当前位置(x,y) move_to_element(to_element) #鼠标移动到某个元素 move_to_element_with_offset(to_element, xoffset, yoffset) #将鼠标移动到距某个元素多少距离的位置 release(on_element=None) #在某个元素位置松开鼠标左键 perform() #执行链中的所有动作

     实例:

    #定位元素位置,可通过xpath、id、tag_name、class_name、selector等
    container= driver.find_element_by_xpath('//*[@id="container"]/div[1]')
    ActionChains(driver).move_to_element(canvas).perform

    3.selenium获取网页中style display:none的元素

     在UI自动化测试中,有时因为前端元素被设置为不可见导致页面元素无法定位,此时,我们可以通过JavaScript修改页面元素属性来将元素设为可见。

    #首先通过selenium封装好的方法document去获取元素,document提供以下方法来定位元素:
    #    ①getElementById():返回对指定ID第一个对象的引用
    #    ②getElementsByName() :返回带有指定名称的对象集合
    #    ③getElementsByTagName():返回带有指定标签名的对象集合
    #此次我们通过元素id获取该元素
    js = "document.getElementById("table1").style.display='block';"
    #执行js脚本
    driver.execute_script(js)

    4.selenium爬取网页时修改网页某元素属性

    #document获取原色可参考上一条,
    js='document.querySelector("#container > div:nth-child(2)").style.left="500px"'
    driver.execute_script(js)

    document的querySeletor和querySelectorAll的区别:

      querySelector只返回匹配的第一个元素,如果没有匹配项,返回null。 

      querySelectorAll返回匹配的元素集合,如果没有匹配项,返回空的nodelist(节点数组)。

      例如:找出body标签下的第一个div

    document.body.querySelectorAll("div")[0] 
  • 相关阅读:
    k8s 集群节点重启后etcd Unhealthy 解决
    no matches for kind “Deployment” in version "extensions/v1beta1 问题解决
    go web 读书笔记 (go 与 web 应用)
    Linux设置ssh超时时间
    C++中继承方式
    C++中类中范围解析运算符::和点运算符(.)
    C++ 中类与结构体的区别
    C++中. 与 -> 运算符的区别
    C++之字符串
    C++之数组
  • 原文地址:https://www.cnblogs.com/qilin20/p/12269023.html
Copyright © 2011-2022 走看看