zoukankan      html  css  js  c++  java
  • Python+selenium 【第三章】UI自动化元素识别css

    UI自动化元素识别--css

    css_selector是什么?

      CSS是一个被用来描述如何在屏幕等处渲染HTML和XML文档的语言。CSS使用选择器来为文档中的元素绑定样式属性。

      选择器(selector)是用来在树中匹配元素的模式,选择器对HTML和XML进行了优化,被设计用来在注重性能的代码中执行。

      Selenium官网的Document里极力推荐使用css_selector,而不是XPath来定位元素。

    Css_selector常用如下6种定位元素的方法:

     

    绝对路径

    • 示例代码

    # -*- coding: utf-8 -*-
    # @Time : 2021/12/22 15:59
    # @Author : Limusen
    # @File : demo_ui_css

    import time
    from selenium import webdriver

    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com")

    # css通过元素在页面布局的位置定位 一切皆为框
    # 使用空格来做分隔符,遇到class就使用 . 遇到id就使用 #

    # 1.绝对路径定位 定位到新闻
    driver.find_element_by_css_selector('html body div div div#s-top-left a').click()

    相对路径

    • 示例代码

    # -*- coding: utf-8 -*-
    # @Time : 2021/12/22 15:59
    # @Author : Limusen
    # @File : demo_ui_css

    import time
    from selenium import webdriver

    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com")

    # css通过元素在页面布局的位置定位 一切皆为框
    # 使用空格来做分隔符,遇到class就使用 . 遇到id就使用 #

    # # 2. 相对路径定位 定位到hao123
    driver.find_element_by_css_selector('div#s-top-left.s-top-left-new.s-isindex-wrap a+a').click()
    # # 2.1 输入内容再点击查询
    driver.find_element_by_css_selector('#kw').send_keys("hahahahah")
    driver.find_element_by_css_selector('#su').click()

    元素属性

    • 示例代码

    # -*- coding: utf-8 -*-
    # @Time : 2021/12/22 15:59
    # @Author : Limusen
    # @File : demo_ui_css

    import time
    from selenium import webdriver

    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com")

    # css通过元素在页面布局的位置定位 一切皆为框
    # 使用空格来做分隔符,遇到class就使用 . 遇到id就使用 #

    # # 3.使用元素属性定位
    driver.find_element_by_css_selector("input[id='kw'][ name='wd']").send_keys("查一下宝儿")
    driver.find_element_by_css_selector("input[value='百度一下']").click()

    元素属性值

    • 示例代码

    # -*- coding: utf-8 -*-
    # @Time : 2021/12/22 15:59
    # @Author : Limusen
    # @File : demo_ui_css

    import time
    from selenium import webdriver

    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com")

    # css通过元素在页面布局的位置定位 一切皆为框
    # 使用空格来做分隔符,遇到class就使用 . 遇到id就使用 #

    # # 4.部分属性值匹配 http://www.hao123.com
    driver.find_element_by_css_selector('a[href="https://www.hao123.com"]').click()
    # # 4.1 元素值开头包含内容: ^=
    driver.find_element_by_css_selector('a[href^="https://www.hao123"]').click()
    # # 4.2 元素值结尾包含内容: $=
    driver.find_element_by_css_selector('a[href$="www.hao123.com"]').click()
    # # 4.3 元素值中间包含内容 *=
    driver.find_element_by_css_selector('a[href*="https://www.hao123"]').click()

    查询子元素绝对路径

    • 示例代码

    # -*- coding: utf-8 -*-
    # @Time : 2021/12/22 15:59
    # @Author : Limusen
    # @File : demo_ui_css

    import time
    from selenium import webdriver

    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com")

    # css通过元素在页面布局的位置定位 一切皆为框
    # 使用空格来做分隔符,遇到class就使用 . 遇到id就使用 #

    # # 5.查找子元素
    # 5.1 查找第一个子元素 first-child
    driver.find_element_by_css_selector('div.s-top-left-new.s-isindex-wrap a:first-child').click()

    # # 5.2 查找第n个子元素
    driver.find_element_by_css_selector('div#s-top-left a:nth-child(3)').click()
    driver.find_element_by_css_selector('div#s-top-left a:nth-child(6)').click()

    查询兄弟元素

    • 示例代码

    # -*- coding: utf-8 -*-
    # @Time : 2021/12/22 15:59
    # @Author : Limusen
    # @File : demo_ui_css

    import time
    from selenium import webdriver

    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com")

    # css通过元素在页面布局的位置定位 一切皆为框
    # 使用空格来做分隔符,遇到class就使用 . 遇到id就使用 #

    # # 6.查询兄弟元素
    driver.find_element_by_css_selector('div#s-top-left a+a+a+a').click()

    time.sleep(2)
    driver.quit()

     

    识别元素By.xxx 进阶

    • 示例代码

    # -*- coding: utf-8 -*-
    # @Time : 2021/12/22 16:47
    # @Author : Limusen
    # @File : demo_ui_by_05


    import time
    from selenium import webdriver
    from selenium.webdriver.common.by import By

    # 识别元素进阶
    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com")

    # 将识别方法与识别属性分离开
    driver.find_element(By.NAME, 'wd').send_keys("hahah")
    # driver.find_element(By.CLASS_NAME,'s_ipt').send_keys("元素识别方法")
    # driver.find_element(By.ID,'su').click()
    # driver.find_element(By.PARTIAL_LINK_TEXT, 'hao').click()
    # driver.find_element(By.CSS_SELECTOR,'#kw').send_keys("12306")

    time.sleep(2)
    driver.quit()

    总结

    本章节主要讲述了css的几种定位方法,相对与xpath而言,更加推荐使用css定位,当然根据自己的喜好选择合适的.下一章节我们讲述鼠标和键盘操作

    代码地址

    https://gitee.com/todayisgoodday/PythonSelenium

    CSDN地址

    https://blog.csdn.net/weixin_42382016/category_11566096.html

  • 相关阅读:
    C#学习(五)- 正则表达式等
    C#学习(四)
    C#学习(三)
    C#学习(二)
    终于装好了VS2013,开始!(一)
    简短的开始,C#学习分享地。
    java虚拟机之虚拟机类加载机制
    在用mybatis向MySQL数据库中插入时间时报错:Incorrect datetime value: '' for column '' at row 1
    什么是高并发 ,一些常见的处理方式
    基本类型和引用类型的区别
  • 原文地址:https://www.cnblogs.com/yushengaqingzhijiao/p/15720211.html
Copyright © 2011-2022 走看看