webdriverselenium_Xpath元素定位

webdriverselenium_Xpath元素定位

Xpath元素定位

  1. 使用id,class等属性进行xpath定位
    ‘//*[@id=“kw”]’ *为省略标签,[]内部为属性

  2. 使用标签+属性定位
    避免多个元素属性名相同
    '//span[@class=“title-content-title”]'span为标签,[]内部为属性

  3. 使用层级的方式
    ‘//ul[@class=“s-hotsearch-content”]/li’
    ‘//标签[@属性]/子标签’

  4. 层级+索引的方式
    避免同一层级下面多个标签相同的元素
    ‘//ul[@class=“s-hotsearch-content”]/li[1]’
    ‘//标签[@属性]/子标签[序号从1开始]’

  5. Xpath属性逻辑判断
    使用and or not的方式 同时满足多个属性要求
    '//*[@id="kw"and @name=“wd”]'要求id="kw"并且name=“wd”

  6. Xpath模糊匹配
    “//*[contains(text(),‘新闻’)]”
    包含文字新闻

# -*- coding: utf-8 -*-

"""
@Time        : 2021/5/19 14:14
@Auth        : jie.wang
@Email       : 1392147363@qq.com
@File        : 1.py
@Description : 关于xpath的相关使用方式
"""

from selenium import webdriver
import unittest
import time


class MyTest(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.implicitly_wait(30)
        self.driver.maximize_window()
        self.base_url = "https://www.baidu.com/"

    #使用id,class等属性
    def test_by_xpath01(self):
        driver = self.driver
        driver.get(self.base_url )
        try:
            ele=driver.find_element_by_xpath('//*[@id="kw"]')
        except Exception as e:
            print("定位失败,失败原因:{}".format(e))
            self.assertEqual(e, 1)
        else:
            print("xpath属性定位成功")


     # 使用标签+属性定位避免属性名相同
    def test_by_xpath02(self):
        driver = self.driver
        driver.get(self.base_url)
        try:
            ele = driver.find_element_by_xpath('//span[@class="title-content-title"]')
        except Exception as e:
            print("定位失败,失败原因:{}".format(e))
            self.assertEqual(e, 1)
        else:
            print("xpath标签+属性定位成功")
            ele.click()
            time.sleep(3)

     # 使用层级的方式
    def test_by_xpath03(self):
        driver = self.driver
        driver.get(self.base_url)
        try:
            ele = driver.find_element_by_xpath('//ul[@class="s-hotsearch-content"]/li')
        except Exception as e:
            print("定位失败,失败原因:{}".format(e))
            self.assertEqual(e, 1)
        else:
            print("xpath层级定位成功")
            ele.click()
            time.sleep(3)

    # 使用层级+索引的方式 避免同一层级下面多个标签相同的元素
    def test_by_xpath04(self):
        driver = self.driver
        driver.get(self.base_url)
        try:
            ele = driver.find_element_by_xpath('//ul[@class="s-hotsearch-content"]/li[1]')
        except Exception as e:
            print("定位失败,失败原因:{}".format(e))
            self.assertEqual(e, 1)
        else:
            print("xpath层级+索引定位成功")
            ele.click()
            time.sleep(3)

    # 使用and or not的方式 同时满足多个属性
    def test_by_xpath05(self):
        driver = self.driver
        driver.get(self.base_url)
        try:
            ele = driver.find_element_by_xpath('//*[@id="kw"and @name="wd"]')
        except Exception as e:
            print("定位失败,失败原因:{}".format(e))
            self.assertEqual(e, 1)
        else:
            print("属性and的方式定位成功")
            ele.click()
            time.sleep(3)

    # 模糊匹配
    def test_by_xpath06(self):
        driver = self.driver
        driver.get(self.base_url)
        try:
            ele = driver.find_element_by_xpath("//*[contains(text(),'新闻')]")
        except Exception as e:
            print("定位失败,失败原因:{}".format(e))
            self.assertEqual(e, 1)
        else:
            print("模糊匹配定位成功")
            ele.click()
            time.sleep(3)


    def tearDown(self):
        self.driver.quit()


if __name__=="__main__":
    unittest.main()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值