selenium元素定位的几种方式

from selenium import webdriver

# 打开一个指定的浏览器
driver = webdriver.Chrome()

# 访问一个网址
driver.get('https://www.baidu.com')

# id定位
ele = driver.find_element_by_id("kw")
# class定位    参数只能是一个class值
driver.find_element_by_class_name("s_ipt")
# 找页面当中匹配表达式的所有元素
eles = driver.find_elements_by_class_name("s_ipt")
# tag
driver.find_element_by_tag_name("input")
# name
driver.find_element_by_name("wd")
# 文本链接
# 1.完全匹配
driver.find_element_by_link_text("更多产品")
# 2.模糊匹配
driver.find_element_by_partial_link_text("产品")

# xpath
# 绝对定位  以/单斜杠开头,从根节点开始,严格按照顺序和位置来表达   父/子
# /html/body/div/div/div[@class="main-container"]/div/ul/ul/li/span   不建议使用
# 相对定位  以//双斜杠开头,不管元素的位置和顺序. 在HTML页面当中,有没有匹配到表达式的元素
# driver.find_element_by_xpath("//*[@id=\"kw\"]")
# 1.//标签名[@属性名称=属性值]
# 2.逻辑运算   //标签名[@属性名称=属性值 and\or @属性名称=属性值]
# 3.层级定位   元素本身的属性不能够唯一定位到自己. 借助于比较近的祖先结点来缩小重找范围,
# 先找到某一个祖先结点,再在祖先的子孙后代中查找元素
# //div[@id="u"]/a[@name="tj_login"]
# //tr[2]/td[@data-time="15:00-16:00"]
# 4.文本定位  //a[text()="新闻"]
# 5.模糊匹配  //input[contains(@placeholder,"邮箱")]
# 6.轴定位语法
#    ancestor:祖先结点  包括父    ***
#    parent:父结点    ***
#    preceding:当前元素结点标签之前的所有结点.(HTML页面先后顺序)
#    preceding-sibling:当前元素结点标签之前的所有兄弟结点    ***
#    following:当前元素结点标签之后的所有结点.(HTML页面先后顺序)
#    following-sibling:当前元素结点标签之后的所有兄弟结点    ***
#    使用语法:/轴名称::结点名称  //div[text()="测试test"]/parent::td/following-sibling::td/div[text()="已支付"]
driver.find_element_by_xpath('//div[text()="测试test"]/parent::td/following-sibling::td/div[text()="已支付"]')

# css_selector 重点xpath
# 标签名#id值
driver.find_element_by_css_selector("input#kw")

 

你可能感兴趣的:(python自动化,selenium)