• RPA-3 之B/S第二讲:selenium获取单元素的方法



    前言

    随着各大企业数字化转型的不断推进,RPA这门技术也越来越重要,很多人都开启了RPA学习,本文就介绍了RPA的基础内容。


    一、cssSelector

    通过cssSelector获取元素是最简单的一种方法:

    from selenium import webdriver
    brower = webdriver.Chrome(options=option)   # 打开谷歌浏览器
    brower.implicitly_wait(10)    # 查找元素的默认等待时间是10s
    brower.get('https://blog.csdn.net/Z_baihang/article/details/126538978?spm=1001.2014.3001.5501')  # 打开网址
    brower.maximize_window()   # 最大化谷歌浏览器窗口
    brower.find_element_by_css_selector("#content_views > p:nth-child(7)")  # cssSelector查找元素
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    如图:
    1、浏览器中按下F12,打开开发者页面,
    2、点击开发者页面左上角箭头,再点击要查询的元素(标签p),自动跳转到元素在代码中的位置
    3、鼠标右击元素,依次选择 复制=>复制selector
    4、得到"#content_views > p:nth-child(7)",粘贴至代码中
    在这里插入图片描述

    二、XPath

    1、直接使用XPath

    步骤与cssSelector一致:
    代码如下(示例):

    from selenium import webdriver
    brower = webdriver.Chrome(options=option)   # 打开谷歌浏览器
    brower.implicitly_wait(10)    # 查找元素的默认等待时间是10s
    brower.get('https://blog.csdn.net/Z_baihang/article/details/126538978?spm=1001.2014.3001.5501')  # 打开网址
    brower.maximize_window()   # 最大化谷歌浏览器窗口
    brower.find_element_by_xpath("//*[@id="content_views"]/p[3]")  # xpath直接查找元素
    brower.find_element_by_xpath("/html/body/div[3]/div[1]/main/div[1]/article/div[1]/div[1]/p[3]")  # xpath全路径查找元素
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    如图:
    1、浏览器中按下F12,打开开发者页面,
    2、点击开发者页面左上角箭头,再点击要查询的元素(标签p),自动跳转到元素在代码中的位置
    3、鼠标右击元素,依次选择 复制=>复制XPath
    4、得到"//*[@id=“content_views”]/p[3]",粘贴至代码中
    5、【复制XPath】只是复制元素的相对路径,【复制完整XPath】复制的是元素的全路径,对比结果如代码所示
    在这里插入图片描述

    2、XPath根据内容定位元素

    代码如下(示例):

    from selenium import webdriver
    brower = webdriver.Chrome(options=option)   # 打开谷歌浏览器
    brower.implicitly_wait(10)    # 查找元素的默认等待时间是10s
    brower.get('https://blog.csdn.net/Z_baihang/article/details/126538978?spm=1001.2014.3001.5501')  # 打开网址
    brower.maximize_window()   # 最大化谷歌浏览器窗口
    brower.find_element_by_xpath("//p[contains(text(), "随着各大企业数字化转型的不断推进")]")  # 1、xpath根据内容查找,p标签的内容中包含某些内容(页面中具体内容不唯一,但是肯定包含某些字段时使用)
    brower.find_element_by_xpath("//p[contains(text(), "随着各大企业数字化转型的不断推进,RPA这门技术也越来越重要,很多人都开启了RPA学习,本文就介绍了RPA的基础内容。")]")  # 2、xpath根据内容查找,p标签的内容中就是某些内容(页面中内容确定且唯一时使用)
    brower.find_element_by_xpath("//*[contains(text(), "随着各大企业数字化转型的不断推进,RPA这门技术也越来越重要,很多人都开启了RPA学习,本文就介绍了RPA的基础内容。")]")  # 3、xpath根据内容查找,标签不确定时使用(页面中内容确定且唯一)
    brower.find_element_by_xpath("//p[text()="数字化转型" and text()="RPA"]")  # 4、xpath根据内容查找,(页面中可以确定的内容不连续时使用)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    三、ID

    代码如下(示例):

    from selenium import webdriver
    brower = webdriver.Chrome(options=option)   # 打开谷歌浏览器
    brower.implicitly_wait(10)    # 查找元素的默认等待时间是10s
    brower.get('https://blog.csdn.net/Z_baihang/article/details/126538978?spm=1001.2014.3001.5501')  # 打开网址
    brower.maximize_window()   # 最大化谷歌浏览器窗口
    brower.find_element_by_id("_5")  # 当元素存在id属性时使用
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    四、class

    代码如下(示例):

    from selenium import webdriver
    brower = webdriver.Chrome(options=option)   # 打开谷歌浏览器
    brower.implicitly_wait(10)    # 查找元素的默认等待时间是10s
    brower.get('https://blog.csdn.net/Z_baihang/article/details/126538978?spm=1001.2014.3001.5501')  # 打开网址
    brower.maximize_window()   # 最大化谷歌浏览器窗口
    brower.brower.find_element_by_class_name('t1')  # 当元素存在class属性并且页面内class标签内容唯一时使用
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    五、name

    代码如下(示例):

    from selenium import webdriver
    brower = webdriver.Chrome(options=option)   # 打开谷歌浏览器
    brower.implicitly_wait(10)    # 查找元素的默认等待时间是10s
    brower.get('https://blog.csdn.net/Z_baihang/article/details/126538978?spm=1001.2014.3001.5501')  # 打开网址
    brower.maximize_window()   # 最大化谷歌浏览器窗口
    brower.brower.find_element_by_name('t1')  # 当元素存在name属性并且页面内name属性唯一时使用
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    六、tag name

    代码如下(示例):

    from selenium import webdriver
    brower = webdriver.Chrome(options=option)   # 打开谷歌浏览器
    brower.implicitly_wait(10)    # 查找元素的默认等待时间是10s
    brower.get('https://blog.csdn.net/Z_baihang/article/details/126538978?spm=1001.2014.3001.5501')  # 打开网址
    brower.maximize_window()   # 最大化谷歌浏览器窗口
    brower.brower.find_element_by_tag_name('p')  # 根据元素的标签属性查找元素(页面内标签唯一)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    七、超链接内容

    代码如下(示例):

    from selenium import webdriver
    brower = webdriver.Chrome(options=option)   # 打开谷歌浏览器
    brower.implicitly_wait(10)    # 查找元素的默认等待时间是10s
    brower.get('https://blog.csdn.net/Z_baihang/article/details/126538978?spm=1001.2014.3001.5501')  # 打开网址
    brower.maximize_window()   # 最大化谷歌浏览器窗口
    brower.find_element_by_link_text('注意:python安装selenium模块和安装驱动是两件事')  # 当元素是a标签或者标签内存在href等可以跳转的链接时使用
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    如图所示:
    在这里插入图片描述

    八、超链接内容的部分匹配

    代码如下(示例):

    from selenium import webdriver
    brower = webdriver.Chrome(options=option)   # 打开谷歌浏览器
    brower.implicitly_wait(10)    # 查找元素的默认等待时间是10s
    brower.get('https://blog.csdn.net/Z_baihang/article/details/126538978?spm=1001.2014.3001.5501')  # 打开网址
    brower.maximize_window()   # 最大化谷歌浏览器窗口
    brower.find_element_by_partial_link_text('注意:python')  # 当元素是a标签或者标签内存在href等可以跳转的链接时使用,只需要标签的部分内容即可
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    九、自定义查找

    代码如下(示例):

    from selenium import webdriver
    brower = webdriver.Chrome(options=option)   # 打开谷歌浏览器
    brower.implicitly_wait(10)    # 查找元素的默认等待时间是10s
    brower.get('https://blog.csdn.net/Z_baihang/article/details/126538978?spm=1001.2014.3001.5501')  # 打开网址
    brower.maximize_window()   # 最大化谷歌浏览器窗口
    brower.find_element('id', 'key')  # 使用id属性,查找id为key的元素,id可以更改为上述方法的任意一种
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    或者使用

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    brower = webdriver.Chrome(options=option)
    brower.implicitly_wait(10)    # 查找元素的默认等待时间是10s
    brower.get('https://blog.csdn.net/Z_baihang/article/details/126538978?spm=1001.2014.3001.5501')  # 打开网址
    brower.find_element(By.ID, 'id')   # 通过id
    brower.find_element(By.XPATH, 'xpath')  # 通过xpath
    brower.find_element(By.NAME, 'name')  # 通过name
    brower.find_element(By.TAG_NAME, 'tagName')  # 通过tag name
    brower.find_element(By.CSS_SELECTOR, 'css')  # 通过cssSelector
    brower.find_element(By.CLASS_NAME, 'className')  # 通过class name
    brower.find_element(By.LINK_TEXT, 'linkText')  # 通过link text
    brower.find_element(By.PARTIAL_LINK_TEXT, 'partialLinkText')  # 通过 partial link text
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    总结

    以上是selenium获取单个元素的方法总结

  • 相关阅读:
    【第38篇】MixConv:混合深度卷积核
    HTTP学习——跨域资源共享(CORS)
    供应链供需预估-[时间序列]
    【英语:基础高阶_经典外刊阅读】L4.阅读填空题一网打尽
    yum更换源
    前端使用firebase配置第三方登录介绍(谷歌登录,facebook登录等)
    Unions
    【Python】使用Python库中的pymysql执行SQL
    Pytorch(一)——Pytorch基础知识
    计算一个日期是一年中的第多天问题(普通、结构体版)
  • 原文地址:https://blog.csdn.net/Z_baihang/article/details/126546555