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()

 

posted @ 2020-07-17 20:26  弹弹大魔王  阅读(0)  评论(0编辑  收藏  举报