当前位置:   article > 正文

web自动化selenium第二章-3. CSS定位_selenium class 选择器

selenium class 选择器

3.1 什么是CSS定位?
1. CSS( Cascading Style Sheets) 是一种语言, 它用来描述HTML元素的显示样式;
2. 在CSS中, 选择器是一种模式, 用于选择需要添加样式的元素;
3. 在Selenium中也可以使用这种选择器来定位元素。
提示:
1. 在selenium中推荐使用CSS定位, 因为它比XPath定位速度要快
2. css选择器语法非常强大
CSS定位方法
element = driver.find_element_by_css_selector(css_selector)
 

3.2 CSS定位常用策略 (方式)
1. id选择器
2. class选择器
3. 元素选择器
4. 属性选择器
5. 层级选择器
id选择器
说明: 根据元素id属性来选择
格式: #id
例如: #userA <选择id属性值为userA的元素>
class选择器
说明: 根据元素class属性来选择
格式: .class
例如: .telA <选择class属性值为telA的所有元素>
元素选择器
说明: 根据元素的标签名选择
格式: element
例如: input <选择所有input元素>
属性选择器
说明: 根据元素的属性名和值来选择
格式: [attribute=value] element[attribute=value]
例如: [type="password"] <选择type属性值为password的元素>
 

  1. """
  2. 需求:
  3. 1. 使用css id选择器 定位用户名 输入admin
  4. 2. 使用css 属性选择 定位密码框 输入123456
  5. 3. 使用 css class 选择器 定位电话号码: 18611112222
  6. 4. 使用css 元素选择器 定位span标签获取文本值
  7. 5. 使用层级选择器 定位email 输入 123@qq.com
  8. 方法:
  9. driver.find_element_by_css_selector()
  10. 获取文本的方法 元素.text
  11. """
  12. # 导包
  13. import time
  14. from selenium import webdriver
  15. from time import sleep
  16. # 获取 谷歌浏览器对象
  17. driver = webdriver.Chrome()
  18. # 打开注册A.html
  19. # 获取 Ie
  20. # driver = webdriver.Ie()
  21. # 打开 注册A.html
  22. url = r"E:\Python\测试资料\8天web自动化讲义\素材\注册A.html"
  23. driver.get(url)
  24. # 1. 使用css id选择器 定位用户名 输入admin
  25. driver.find_element_by_css_selector("#userA").send_keys("admin")
  26. # 2. 使用css 属性选择 定位密码框 输入123456
  27. driver.find_element_by_css_selector("#passwordA").send_keys("123456")
  28. # 3. 使用 css class 选择器 定位电话号码: 18611112222
  29. driver.find_element_by_css_selector(".telA").send_keys("18611112222") # <input type="telA" name="telA" id="telA" placeholder="电话A" class="telA" value="">
  30. # 4. 使用css 元素选择器 定位span标签获取文本值
  31. span=driver.find_element_by_css_selector("span").text
  32. print(f'span={span}')
  33. # 5. 使用层级选择器 定位email 输入 123@qq.com
  34. """
  35. <p>
  36. <label for="emailA">电子邮件A</label>
  37. <input type="emailA" name="emailA" id="emailA" placeholder="电子邮箱A" value="">
  38. </p>
  39. """
  40. driver.find_element_by_css_selector("p>input[placeholder='电子邮箱A']").send_keys("123@qq.com")
  41. driver.find_element_by_css_selector("p>input[placeholder='账号A']").send_keys("123@qq.com")
  42. time.sleep(3)
  43. # 退出浏览器
  44. driver.quit()

层级选择器


说明: 根据元素的父子关系来选择
格式1: element1>element2 通过element1来定位element2, 并且element2必须为element1的直接子
元素
例如1: p[id='p1']>input <定位指定p元素下的直接子元素input>
格式2: element1 element2 通过element1来定位element2, 并且element2为element1的后代元素
例如2: p[id='p1'] input <定位指定p元素下的后代元素input>
练习
需求: 打开注册A.html页面, 完成以下操作
1).使用CSS定位方式中的层级选择器定位用户名输入框, 并输入: admin

  1. # 层级选择器
  2. # 说明: 根据元素的父子关系来选择
  3. # 格式1: element1>element2 通过element1来定位element2, 并且element2必须为element1的直接子
  4. # 元素
  5. # 例如1: p[id='p1']>input <定位指定p元素下的直接子元素input>
  6. # 格式2: element1 element2 通过element1来定位element2, 并且element2为element1的后代元素
  7. # 例如2: p[id='p1'] input <定位指定p元素下的后代元素input>
  8. # 导包
  9. import time
  10. from selenium import webdriver
  11. from time import sleep
  12. # 获取 谷歌浏览器对象
  13. driver = webdriver.Chrome()
  14. # 打开注册A.html
  15. # 获取 Ie
  16. # driver = webdriver.Ie()
  17. # 打开 注册A.html
  18. url = r"E:\Python\测试资料\8天web自动化讲义\素材\注册A.html"
  19. driver.get(url)
  20. """
  21. 需求: 打开注册A.html页面, 完成以下操作
  22. 1).使用CSS定位方式中的层级选择器定位用户名输入框, 并输入: admi
  23. ww
  24. """
  25. # 格式1: element1>element2 通过element1来定位element2, 并且element2必须为element1的直接子
  26. # 元素
  27. # 例如1: p[id='p1']>input <定位指定p元素下的直接子元素input>
  28. driver.find_element_by_css_selector("p[id='p1']>input").send_keys("admin")
  29. # 格式2: element1 element2 通过element1来定位element2, 并且element2为element1的后代元素
  30. # 例如2: p[id='p1'] input <定位指定p元素下的后代元素input>
  31. driver.find_element_by_css_selector("p[id='p1'] input").clear()
  32. driver.find_element_by_css_selector("p[id='p1'] input").send_keys("admin2")
  33. time.sleep(3)
  34. driver.quit()


3.3 CSS延伸[了解]

input[type^='p']
input[type$='d']
input[type*='w']
type属性以p字母开头的元素
type属性以d字母结束的元素
type属性包含w字母的元素

3.4 CSS总结
1. 常用的CSS定位选择器有哪些?

4. 八种元素定位方式分类-汇总
 

1. id、 name、 class_name: 为元素属性定位
2. tag_name: 为元素标签名称
3. link_text、 partial_link_text: 为超链接定位(a标签)
4. XPath: 为元素路径定位
5. CSS: 为CSS选择器定位
 

XPath与CSS类似功能对比

定位方式XPathCSS
元素名//inputinput
id//input[@id='userA']#userA
class//*[@class='telA'].telA
属性1. //*[text()="xxx"]
2. //input[starts-with(@attribute,'xxx')]
3. //input[contains(@attribute,'xxx')]
1. input[type^='p']
2. input[type$='d']
3. input[type*='w']

5. 定位元素的另一种写法--延伸


方法: find_element(by=By.ID, value=None)
备注: 需要两个参数, 第一个参数为定位的类型由By提供, 第二个参数为定位的具体方式
示例:
1. driver.find_element(By.CSS_SELECTOR, '#emailA').send_keys("123@126.com")
2. driver.find_element(By.XPATH, '//*[@id="emailA"]').send_keys('234@qq.com')
3. driver.find_element(By.ID, "userA").send_keys("admin")
4. driver.find_element(By.NAME, "passwordA").send_keys("123456")
5. driver.find_element(By.CLASS_NAME, "telA").send_keys("18611111111")
6. driver.find_element(By.TAG_NAME, 'input').send_keys("123")
7. driver.find_element(By.LINK_TEXT, '访问 新浪 网站').click()
8. driver.find_element(By.PARTIAL_LINK_TEXT, '访问').click()
5.1 导入By类



 

  1. 导包: from selenium.webdriver.common.by import By
  2. class By(object):
  3. """
  4. Set of supported locator strategies.
  5. """
  6. ID = "id"
  1. XPATH = "xpath"
  2. LINK_TEXT = "link text"
  3. PARTIAL_LINK_TEXT = "partial link text"
  4. NAME = "name"
  5. TAG_NAME = "tag name"
  6. CLASS_NAME = "class name"
  7. CSS_SELECTOR = "css selector"


5.2 find_element_by_xxx()和find_element() 区别
说明: 通过查看find_element_by_id底层实现方法, 发现底层是调用find_element方法进行的封
装;

  1. def find_element_by_id(self, id_):
  2. """Finds an element by id.
  3. :Args:
  4. - id\_ - The id of the element to be found.
  5. :Usage:
  6. driver.find_element_by_id('foo')
  7. """
  8. return self.find_element(by=By.ID, value=id_)



 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/598832
推荐阅读
相关标签
  

闽ICP备14008679号