当前位置: 首页 > 工具软件 > WebdriverCSS > 使用案例 >

webdriver 自动化定位方式

沙星波
2023-12-01

自动化的定位方式有8种:

locate_types = {
    "id" : By.ID,
    "name" : By.NAME,
    "tag_name" : By.TAG_NAME,
    "class_name" : By.CLASS_NAME,
    "link_text" : By.LINK_TEXT,
    "xpath" : By.XPATH,
    "partial_link_text": By.PARTIAL_LINK_TEXT,
    "css_selector": By.CSS_SELECTOR
}

1、id属性

ele = driver.find_element_by_id(“kw”) #找到id = kw的一个元素
#ele1= driver.find_elements_by_id(“kw”) #找到id = kw的所有的元素,返回一个列表

2、name属性

driver.find_element_by_name(“phone”) #找一个单一的元素,从上放下,找到符合条件的第一个
driver.find_elements_by_name(“phone”) #找到所有匹配的元素,返回一个列表

3、class属性

driver.find_element_by_class_name()
driver.find_elements_by_class_name()

4、标签名

driver.find_element_by_tag_name(“lgfff”)
driver.find_elements_by_tag_name(“lgfff”)

5 、链接元素 link_text #完全匹配

driver.find_element_by_link_text(“更多产品”) #完全匹配

6 、链接元素 link_text #模糊匹配
driver.find_elements_by_partial_link_text(“更多”) #模糊匹配

7 、 xpath 

xpath定位
driver.find_elements_by_xpath()

绝对定位 严格按照路径和位置来定位 以/开头 父/子关系
/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input

相对定位 参照物:整个html 只要在整个页面中,找到符合属性的元素,以//开头
//*[@id=“kw”]

7.1 //标签名[@属性名=“属性值”] //input[@id=“kw”] 匹配所有 //[@id=“kw”]
driver.find_elements_by_xpath("//input[@id=“kw”]")

7.2 逻辑运算 and or //标签名[@属性名=“属性值” and @属性名=“属性值”] //input[@id=“kw” and @name=“wd”]
driver.find_elements_by_xpath("//input[@id=“kw” and @name=“wd”]")

7.3 文本定位 //标签名[text()=“文本内容”] #文本内容完全匹配 //a[text()=“新闻”]
driver.find_elements_by_xpath("//a[text()=“新闻”]")

7.4 部分匹配 文本内容/属性值 contains
//标签名[contains(text(),“部分文本内容”)] #文本内容太长 //[contains(text(),“我的”)]
//标签名[contains(@属性名,“部分属性值”)] #id(不变动+变动 如2020dhskafhald) #class 多个 //[contains(@id,“2020”)]
driver.find_elements_by_xpath("//[contains(text(),“我的”)])

7.5.1 层级定位 第一种方式 //div[@id=“ul”]//a[@name=“tj_login”]
后一个条件,是在前一个得到的结果之内去搜索的。//条件1//条件2…

7.5.2 层级定位 - 轴定位 #表达式 /轴定位名称::标签名[属性表达]
轴名称
ancestor:祖先节点,包含父节点和祖父节点
parent:父结点
preceding_sibling:当前节点标签前的所有兄弟节点
following_sibling:当前节点标签后的所有兄弟节点
following:当前节点标签后的所有节点

使用语法
/轴名称::节点名称 注:轴定位最好用单斜杠

例子
//span[text()=“哈哈”]/parent::div/following_sibling::div[@class=“attend_data_state”]//img
 

8、css  

driver.find_element_by_css_selector()

可以将定位到的元素赋值给一个变量,然后对元素做一些操作

a = driver.find_element_by_id('su')

print(a.text)                   打印文本格式

print(a.tag name)          打印标签名

print(a.get_attribute('herf'))      获取某一个属性的值

 类似资料: