Python-Selenium学习笔记--根据Xpath选择元素

from selenium import webdriver
from selenium.webdriver.common.by import By


if __name__ == '__main__':
    wd = webdriver.Chrome()
    wd.implicitly_wait(20)
    wd.get("https://cdn2.byhy.net/files/selenium/test1.html")

    # 绝对路径选择
    element = wd.find_element(By.XPATH, "/html/body/div/select")
    print(element.text)

    # 加//代表标签为div的元素
    element = wd.find_element(By.XPATH, "//div")
    print(element.text)

    print("-*------------------------------------")
    # 找div当中的p
    elements = wd.find_elements(By.XPATH, "//div//p")
    for e in elements:
        print(e.text)
    print("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
    # 找直接div子节点p
    elements = wd.find_elements(By.XPATH, "//div/p")
    for e in elements:
        print(e.text)

    # 通配符*
    elements = wd.find_elements(By.XPATH, "//div/*")
    for e in elements:
        print(e.get_attribute("outerHTML"))

    # 根据属性选择
    element = wd.find_element(By.XPATH, "//*[@id='us']")  # 属性是[@属性名='']
    print("id=us\n", element.text)

    # css写法,style属性包含了某些字段
    element = wd.find_element(By.CSS_SELECTOR, "[id*='chigaco']")  # *= 代表包含
    print(element.text)

    # css, 以...开头
    element = wd.find_element(By.CSS_SELECTOR, "[id^='chi']")
    print(element.text)

    # css, 以...结尾
    element = wd.find_element(By.CSS_SELECTOR, "[id$='co']")
    print(element.text)

    # xpath写法,包含contains, 以..开头start-with, 以..结尾ends-with, 不一定能用
    elements = wd.find_elements(By.XPATH, "//*[contains(@style,'color')]")
    for e in elements:
        print(e.text)

    # elements = wd.find_elements(By.XPATH, "//*[ends-with(@style, 'lor')]")  # 无法使用ends-with, 只能用css语法[@属性名$='']
    # for e in elements:
    #     print(e.text)

    # 选择某个类型的第n个
    element = wd.find_element(By.XPATH, "//p[2]")  # 选择p类型的第二个元素, 若是*[2]则是不管什么类型的第二个元素
    print(element.text)

    # 选择倒数第n个
    element = wd.find_element(By.XPATH, "//p[last()-1]")  # 从0开始
    print(element.text)

    # 范围选择
    elements = wd.find_elements(By.XPATH, "//option[position()<=2]")  # 选择option的前两个
    for e in elements:
        print(e.text)

    elements = wd.find_elements(By.XPATH, "//option[position()>last()-2]")  # 选择option的最后两个
    for e in elements:
        print(e.text)

    # 组选择和兄弟结点
    elements = wd.find_elements(By.XPATH, "//option|//h4")  # 用|连接,选择所有的option与h4
    for e in elements:
        print(e.text)

    # 选择父节点,css做不到  /..
    element = wd.find_element(By.XPATH, "//*[@id='china']/..")  # 寻找id为china的结点的父节点
    print(element.text)

    # 选择兄弟结点
    elements = wd.find_elements(By.XPATH, "//*[@class='single_choice']/following-sibling::select")  # 寻找class为single_choice的结点的兄弟节点,且兄弟标签为select
    for e in elements:
        print(e.text)

    # 选择前面的兄弟
    elements = wd.find_elements(By.XPATH,
                                "//*[@class='single_choice']/preceding-sibling::p")  # 寻找class为single_choice的结点的兄弟节点,且兄弟标签为p
    for e in elements:
        print(e.text)

    # 若从webelement对象中寻找元素,需要在//前面加"."

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值