xpath方法2
"""
1.学习目标
必须掌握Xpath元素定位方法
2.操作步骤(语法)
2.1 在selenium的语法
driver.find_element_by_xpath("xpath表达式")
2.2 xpath表达式
2.2.1 绝对路径
从根节点开始,一层一层进行查找
/表示绝对路径
/html/body/form/div/fieldset/p/input
2.2.2 相对路径(重点)
// 表示相对路径
1.使用标签+属性定位
//input[@name="userA"]
//标签名[@属性名="属性值"]
2.层级定位
//p[@id='p1']/input
//父标签[@父标签属性名="父标签的属性值"]/子标签名
注意:层级定位不仅限于2层,可以是多层
3.索引
当一个父标签有多个相同的子标签时
//父标签[@父标签属性名="父标签的属性值"]/子标签名[索引值]
---xpath索引从1开始
如果定位的是父标签下的第一个子标签,可以不加索引值
4.逻辑
and
当元素属性与其他元素属性有相同部分的时候,不能只利用一个属性定位,
需要多个元素属性来进行定位,and
//input[@name='user' and @class='login-test']
//标签名[@属性名1="属性值1"and@属性名2="属性值2"and....]
5.模糊匹配
contains
//标签名[contains(@属性名,"属性值/部分属性值")]
//button[contains(@title,"加入会员A")]
什么情况下使用:
id,name,class是动态的--时间戳
3.需求
在注册A页面中
"""
# 1.导入selenium from selenium import webdriver from time import sleep import os # 2. 打开浏览器---谷歌浏览器 driver = webdriver.Chrome() # 3. 输入网址 url = "file:///" + os.path.abspath("练习页面/注册A.html") driver.get(url) sleep(3) # 4. 元素定位---xpath索引 # 4.1通过索引,定位第一个和第三个input标签 # first = driver.find_element_by_xpath("//form[@id='formID']/input") # 定位的是第一个input标签 # third = driver.find_element_by_xpath("//form[@id='formID']/input[3]") # 定位的是第三个input标签 # print("第一个input标签",first.get_attribute("outerHTML")) # print("第三个input标签",third.get_attribute("outerHTML")) # 4.2 xpath逻辑定位(and) # test_2 = driver.find_element_by_xpath("//input[@name='user' and @class='login-test']") # print("test_2输入框", test_2.get_attribute("outerHTML")) # 4.3 xpath模糊匹配--注册A页面中定位按钮 button = driver.find_element_by_xpath('//button[contains(@title,"加入")]') print(button.get_attribute("outerHTML")) # 5.关闭浏览器 driver.quit()