目录
1、表达式://标签名[@属性名称=属性值],支持*号,匹配所有
2、表达式: //标签名[@属性名称=属性值 and @属性名称=属性值] ,支持and,or连接
3、表达式: //标签名[text()="元素的文本内容"] ,文本内容完全匹配
4、表达式: //标签名[contains(text(),"部分文本内容")]
前言
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版权协议,转载请附上原文出处链接和本声明。