Selenium WebDriver提供By.CSS_SELECTOR定位元素方法

打印 上一主题 下一主题

主题 1863|帖子 1863|积分 5589

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
`By.CSS_SELECTOR` 是 Selenium WebDriver 提供的一种定位元素的方法,它答应使用 CSS 选择器来定位页面上的元素。以下是常见的 CSS 选择器语法:
1. **标签选择器(Tag Selector)**:通过元素的标署名选择元素。
   - 示例:`p` 选取所有 p 标签的元素。
2. **类选择器(Class Selector)**:通过元素的类名选择元素。
   - 示例:`.container` 选取所有类名为 container 的元素。
3. **ID 选择器(ID Selector)**:通过元素的 ID 属性选择元素。
   - 示例:`#my_div` 选取 ID 属性为 my_div 的元素。
4. **属性选择器(Attribute Selector)**:根据元素的属性值选择元素。
   - 示例:`[name='username']` 选取所有 name 属性值为 username 的元素。
5. **子元素选择器(Child Selector)**:选择指定元素的直接子元素。
   - 示例:`div > p` 选取所有直接子元素为 div 的 p 元素。
6. **后代元素选择器(Descendant Selector)**:选择指定元素的后代元素。
   - 示例:`div p` 选取所有 div 元素下的 p 元素。
7. **相邻兄弟选择器(Adjacent Sibling Selector)**:选择指定元素的相邻兄弟元素。
   - 示例:`h2 + p` 选取紧跟在 h2 元素后的第一个 p 元素。
8. **通用兄弟选择器(General Sibling Selector)**:选择指定元素的所有兄弟元素。
   - 示例:`h2 ~ p` 选取紧跟在 h2 元素后的所有 p 元素。
9. **伪类选择器(Pseudo-class Selector)**:根据元素的状态或位置选择元素。
   - 示例:`:hover` 选取鼠标悬停在元素上的状态。:nth-child(n) 选取父元素的第 n 个子元素。
10. **伪元素选择器(Pseudo-element Selector)**:选择元素的特定部分。
    - 示例:`::before` 选取元素的前面生成的内容。::after 选取元素的后面生成的内容。
11. **属性存在选择器:选择具有指定属性的元素。
    - 示例:input[type] 选取所有具有 type 属性的 input 元素。
以上是一些常见的 CSS 选择器语法,结合使用它们可以实现灵活且精准的元素定位。
`By.CSS_SELECTOR` 定位元素并模拟用户与页面元素的交互的完备示例代码:
  1. from selenium import webdriver
  2. from selenium.webdriver.common.by import By
  3. import time
  4. # 启动 Chrome 浏览器
  5. driver = webdriver.Chrome()
  6. # 打开页面
  7. driver.get("data:text/html;charset=utf-8," + """
  8. <div id="my_div" class="container">
  9.     <H4>type、press 和 check 方法来模拟用户与页面元素的交互操作</H4>
  10.     <p>Paragraph 1</p>
  11.     <p>Paragraph 2</p>
  12.     <p>Paragraph 3</p>
  13.     <label for="my_input">my_input :<input type="text" id="my_input"></label><BR><BR>
  14.     <button id="my_button">Click Me</button>
  15.     <input type="checkbox" id="my_checkbox">
  16.     <form action="/submit">
  17.         <!-- 复选框 -->
  18.         <label for="checkbox1">选项1:</label>
  19.         <input type="checkbox" id="checkbox1" name="option1" value="Option 1">
  20.         
  21.         <label for="checkbox2">选项2:</label>
  22.         <input type="checkbox" id="checkbox2" name="option2" value="Option 2">
  23.         
  24.         <!-- 下拉框 -->
  25.         <label for="dropdown">选择一项:</label>
  26.         <select id="dropdown" name="dropdown">
  27.             <option value="option1">选项1</option>
  28.             <option value="option2">选项2</option>
  29.             <option value="option3">选项3</option>
  30.         </select>
  31.         
  32.         <input type="submit" value="提交">
  33.     </form>
  34. </div>
  35. """)
  36. # 使用 CSS 选择器定位元素并模拟用户与页面元素的交互
  37. # 输入文本
  38. driver.find_element(By.CSS_SELECTOR, "input#my_input").send_keys("Hello, World!")
  39. # 点击按钮
  40. driver.find_element(By.CSS_SELECTOR, "button#my_button").click()
  41. # 勾选复选框
  42. driver.find_element(By.CSS_SELECTOR, "input#my_checkbox").click()
  43. # 选择下拉框选项
  44. driver.find_element(By.CSS_SELECTOR, "select#dropdown option[value='option2']").click()
  45. # 提交表单
  46. driver.find_element(By.CSS_SELECTOR, "input[type='submit']").click()
  47. time.sleep(5)
  48. # 关闭浏览器
  49. driver.quit()
  50. # find_element(by, value) 方法是 WebDriver 类对象中用于查找单个页面元素的方法。它接受两个参数:
  51. # by: 指定定位元素的方法,可以是以下之一:
  52. # By.ID: 使用元素的 id 属性来定位。
  53. # By.NAME: 使用元素的 name 属性来定位。
  54. # By.XPATH: 使用 XPath 表达式来定位。
  55. # By.LINK_TEXT: 使用链接文本来定位 <a> 元素。
  56. # By.PARTIAL_LINK_TEXT: 使用部分链接文本来定位 <a> 元素。
  57. # By.TAG_NAME: 使用标签名称来定位。
  58. # By.CLASS_NAME: 使用 class 属性来定位。
  59. # By.CSS_SELECTOR: 使用 CSS 选择器来定位。
  60. # value: 定位方法对应的值,即要定位的元素的具体标识信息。
  61. # 该方法会返回匹配的第一个元素,如果找不到匹配的元素,会抛出 NoSuchElementException 异常。
  62. # `By.CSS_SELECTOR` 是 Selenium WebDriver 提供的一种定位元素的方法,它允许使用 CSS 选择器来定位页面上的元素。
  63. # 以下是常见的 CSS 选择器语法:
  64. # 1. **标签选择器(Tag Selector)**:通过元素的标签名选择元素。
  65. #    - 示例:`p` 选取所有 p 标签的元素。
  66. # 2. **类选择器(Class Selector)**:通过元素的类名选择元素。
  67. #    - 示例:`.container` 选取所有类名为 container 的元素。
  68. # 3. **ID 选择器(ID Selector)**:通过元素的 ID 属性选择元素。
  69. #    - 示例:`#my_div` 选取 ID 属性为 my_div 的元素。
  70. # 4. **属性选择器(Attribute Selector)**:根据元素的属性值选择元素。
  71. #    - 示例:`[name='username']` 选取所有 name 属性值为 username 的元素。
  72. # 5. **子元素选择器(Child Selector)**:选择指定元素的直接子元素。
  73. #    - 示例:`div > p` 选取所有直接子元素为 div 的 p 元素。
  74. # 6. **后代元素选择器(Descendant Selector)**:选择指定元素的后代元素。
  75. #    - 示例:`div p` 选取所有 div 元素下的 p 元素。
  76. # 7. **相邻兄弟选择器(Adjacent Sibling Selector)**:选择指定元素的相邻兄弟元素。
  77. #    - 示例:`h2 + p` 选取紧跟在 h2 元素后的第一个 p 元素。
  78. # 8. **通用兄弟选择器(General Sibling Selector)**:选择指定元素的所有兄弟元素。
  79. #    - 示例:`h2 ~ p` 选取紧跟在 h2 元素后的所有 p 元素。
  80. # 9. **伪类选择器(Pseudo-class Selector)**:根据元素的状态或位置选择元素。
  81. #    - 示例:`:hover` 选取鼠标悬停在元素上的状态。:nth-child(n) 选取父元素的第 n 个子元素。
  82. # 10. **伪元素选择器(Pseudo-element Selector)**:选择元素的特定部分。
  83. #     - 示例:`::before` 选取元素的前面生成的内容。::after 选取元素的后面生成的内容。
  84. # 11. **属性存在选择器:选择具有指定属性的元素。
  85. #     - 示例:input[type] 选取所有具有 type 属性的 input 元素。
  86. # 以上是一些常见的 CSS 选择器语法,结合使用它们可以实现灵活且精准的元素定位。
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

麻花痒

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表