最全Selenium八大元素定位

目录

前言

一、通过元素的id属性找元素

二、name属性

三、class属性 -- 只能选择一个class值

四、标签名 tag_name

五、链接元素 link text #完全匹配 

六、链接元素 link text  # 模糊匹配

七、xpath定位

        1、表达式://标签名[@属性名称=属性值],支持*号,匹配所有

        2、表达式: //标签名[@属性名称=属性值 and @属性名称=属性值] ,支持and,or连接

        3、表达式: //标签名[text()="元素的文本内容"] ,文本内容完全匹配

        4、表达式: //标签名[contains(text(),"部分文本内容")]  

                     //标签名[contains(@属性,"部分属性值")]

5、层级定位

        5.1、层级定位              

        5.2 层级定位 - 轴定位 #

八.css定位


前言

8种 定位方式

6种 通过一个属性来定位的

2种 组合各种属性来定位 + 结合各种关系来定位

 

一、通过元素的id属性找元素

        返回的WebElement对象 封装了元素的属性和操作

ele_id = driver.find_element_by_id("元素id")
print(ele_id)

二、name属性

        找一个单一的元素。从上往下,符合条件的第一个

ele_name=driver.find_element_by_name("元素的name")
print(ele_name)

        找到所有匹配的元素。返回的是列表,每一个都是WEbElement

ele_names = driver.find_elements_by_name("元素的name")
print(ele_names)

三、class属性 -- 只能选择一个class值

ele_class=driver.find_element_by_class_name("元素class值")
ele_classes=driver.find_elements_by_class_name("元素class值")
print(ele_class)
print(ele_classes)

四、标签名 tag_name

ele_tag_name=driver.find_element_by_tag_name("元素tag_name值")
ele_tag_names=driver.find_elements_by_tag_name("元素tag_name值")
print(ele_tag_name)
print(ele_tag_names)

五、链接元素 link text #完全匹配 

ele_link_text=driver.find_element_by_link_text("链接名称")  # 完全匹配
print(ele_link_text)

六、链接元素 link text  # 模糊匹配

ele_links_text=driver.find_element_by_partial_link_text("链接名称关键字") # 模糊匹配
print(ele_links_text)

七、xpath定位

 绝对定位:严格按照路径和位置来定位元素 以/开头 父/子关系(不建议使用,因此不展开讲解)

 相对定位:参照物为整个html,只要能够在这个页面当中,找到符合属性的元素。     

 1、表达式://标签名[@属性名称=属性值],支持*号,匹配所有

ele_xpath=driver.find_element_by_xpath('//input[@name="phone"]') 
print(ele_xpath)

 2、表达式: //标签名[@属性名称=属性值 and @属性名称=属性值] ,支持and,or连接

ele_xpath=driver.find_element_by_xpath('//input[@name="phone" and @class="phone"]')
print(ele_xpath)    

3、表达式: //标签名[text()="元素的文本内容"] ,文本内容完全匹配

ele_xpath=driver.find_element_by_xpath('//input[text()="哈喽"]')
print(ele_xpath)         

4、表达式: //标签名[contains(text(),"部分文本内容")]  

                     //标签名[contains(@属性,"部分属性值")]

ele_xpath=driver.find_element_by_xpath('//input[contains(text()="哈喽")]')
print(ele_xpath)  


5、层级定位

5.1、层级定位              

       后一条件,是在前一个得到的结果之内去搜索。表达式://条件1//条件2.....            

ele_xpath=driver.find_element_by_xpath('//div[@id="u1"]//a[@name="tj_login"]')
print(ele_xpath)  

  5.2 层级定位 - 轴定位 #

        表达式:/轴定位名称::标签名[属性表达]       

#following-sibling:弟弟妹妹           
ele_xpath=driver.find_element_by_xpath('//a[@name="tj_trvideo"]/following-sibling::a[@name="tj_login"]')
print(ele_xpath)  
#preceding-sibling: 哥哥姐姐               
ele_xpath=driver.find_element_by_xpath('//a[@name="tj_settingicon"]/preceding-sibling::a[@name="tj_login"]  ')
print(ele_xpath)

八.css定位

可以通过元素的id,class,tag标签这三个属性直接定位

  • #   表示id属性,如:#kw
  • .    表示class属性,如:.s_ipt
  • 直接用标签名称,如:input
# 用CSS通过id属性定位百度搜索框
driver.find_element_by_css_selector("#kw")

# 用CSS通过clas属性定位百度搜索框
driver.find_element_by_css_selector(".s_ipt")

# 用CSS通过标签属性定位百度搜索框
driver.find_element_by_css_selector("input")

 


版权声明:本文为qq_42708085原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。