python8大元素定位

8大元素定位

返回webelement对象

  • 靠单一的特征来找元素

    • id

      • driver.find_element_by_id("")
      • driver.find_element(by=By.ID, value="")
    • class_name

      • driver.find_element_by_class_name("")
      • driver.find_element(by=By.CLASS_NAME,value="")
      • driver.find_elements_by_class_name("")
      • driver.find_elements(by=By.CLASS_NAME,value="")
    • tag_name

      • driver.find_element_by_tag_name("")
      • driver.find_element(by=By.TAG_NAME,value="")
      • driver.find_elements_by_tag_name("")
      • driver.find_elements(by=By.TAG_NAME,value="")
    • name

      • driver.find_element_by_name("")
      • driver.find_element(by=By.NAME,value="")
      • driver.find_elements_by_name("")
      • driver.find_elements(by=By.NAME,value="")
    • link_text a元素

      • 完整匹配文本值
        • driver.find_element_by_link_text("")
        • driver.find_element(by=By.LINK_TEXT,value="")
        • driver.find_elements_by_link_text("")
        • driver.find_elements(by=By.LINK_TEXT,value="")
      • 部分匹配
        • driver.find_element_by_partial_link_text("")
        • driver.find_element(by=By.PARTIAL_LINK_TEXT,value="")
        • driver.find_elements_by_partial_link_text("")
        • driver.find_elemens(by=By.PARTIAL_LINK_TEXT,value="")
  • 组合各种特征和关系来找元素

    • xpath
      • driver.find_element_by_xpath()
      • driver.find_elements_by_xpath()
      • driver.find_element(by=By.XPATH, value="")
      • driver.find_elements(by=By.XPATH, value="")
      • 绝对定位 /开头 父/子
        • /html/body……
        • form/……
      • 相对定位 //
        • //标签名[@属性名=属性值]
          • //input[@id="kw"]
        • //*[@属性名=属性值]
          • //*[@id="kw"]
        • 逻辑运算:and or
          • //input[@id="kw" and @name="wd" or @type="text"]
        • 通过元素的文本内容来定位(文本内容固定)//标签名[text()=文本值]
          • //a[text()="高考大数据"]/../../../../form/span/a/../input
        • 包含(属性/文本内容-包含一部分)- contains(@属性/text(),被包含的内容)
          • //span[contains(@class,"quickdelete-wrap")]/input
          • //span[contains(text(),"图片搜索")]/../input
      • 层级定位
        • 通过父辈、祖先辈找儿子、孙子
          • //div[@id="u1"]/a[@name="tj_login"] a只能是儿子
          • //div[@id="u1"]//a[@name="tj_login"] a不仅仅是儿子
        • 通过儿子找爸爸、爷爷
          • //span[text()="换一换"]/ancestor::div[@class="s-hotsearch-title"]//div
        • 通过兄弟找兄弟
          • //div[@id="u1"]//a[@name="tj_login"]/preceding-sibling::span[@id="s-usersetting-top"]
          • //span[@id="s-usersetting-top"]/following-sibling::a[@name="tj_login"]
      • xpath-轴定位语法
        • 轴运算:
          • ancestor:祖先节点,包括父
          • parent:父节点
          • preceding:当前元素节点标签之前的所有节点(html页面先后顺序)
          • preceding-sibling(当前元素节点标签之前的所有兄弟节点
          • following:当前元素节点标签之后的所有节点(html页面先后顺序)
          • following-sibling:当前元素节点标签之后的所有兄弟节点
        • 使用语法:
          • /轴名称::节点名称[@属性=值]
          • //div[@id="u1"]//a[@name="tj_login"]/preceding-sibling::span[@id="s-usersetting-top"]
          • //span[@id="s-usersetting-top"]/following-sibling::a[@name="tj_login"]
        • 较多的应用场景:
          • 页面显示为一个表格样式的数据列。需要通过组合来定位元素
    • css
      • driver.find_element(by=By.CSS_SELECTOR, value="")
      • driver.find_elements(by=By.CSS_SELECTOR, value="")
      • driver.find_element_by_css_selector("")
      • driver.find_elements_by_css_selector("")
      • input[id="kw"]

posted on 2020-07-10 15:32  tjuyz  阅读(495)  评论(0)    收藏  举报