0


Selenium八大元素定位法

八大元素定位方法

    ID、NAME、CLASS_NAME 、Tag_NAME 这个四个根据元素标签和元素数据进行定位。

    LINK_TEXT、PARTIAL_LINK_TEXT(模糊)这两个根据链接文本进行定位(a标签)。

    XPATH:元素路径的定位

    CSS:css选择器定位(样式定位)

    如何在网页中查看元素?

            以百度为例,首先进入百度首页,右键点击检查(或者按F12),这样我们就来到页面元素查看界面,如下图。

    如何查看定位元素属性?

1、根据ID进行定位

            以百度输入框和搜索按钮为例

    输入框id属性值为"kw",

    代码格式为:
driver.find_element(By.ID, "kw").send_keys("淘宝")
            ![](https://img-blog.csdnimg.cn/direct/e7145497cd43447da6476ce2f1beaa32.png)

     登录按钮id属性值为"su"

    代码格式为:
driver.find_element(By.ID, "su").click()
    完整代码如下:
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
"""
    这就是完整的webUI搜索功能测试流程
"""
# 0.加载驱动
service = Service('E:\\project\\CSXM\\driver_files\\chromedriver.exe')
# 1.打开浏览器
driver = webdriver.Chrome(service=service)
# 2.输入网址
driver.get("https://www.baidu.com/")
sleep(1)
# 3.找到元素
# 4.输入关键字
driver.find_element(By.ID, "kw").send_keys("淘宝")
# 5.点击搜索
driver.find_element(By.ID, "su").click()
sleep(2)
# 6.验证结果  ---assert断言
"""
    断言,判断一个表达式(True/False)
    返回False --触发异常
    特性:条件不满足直接返回错误,不必在继续运行
"""
assert driver.title == "淘宝_百度搜索"
print("测试通过")

2、根据NAME进行定位

            以百度输入框为例

          百度输入框name属性值为:"wd"

    代码格式:
driver.find_element(By.NAME, "wd").send_keys("淘宝")
    完整代码如下:
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
"""
    这就是完整的webUI搜索功能测试流程
"""
# 0.加载驱动
service = Service('E:\\driver\\chromedriver.exe')
# 1.打开浏览器
driver = webdriver.Chrome(service=service)
# 2.输入网址
driver.get("https://www.baidu.com/")
sleep(1)
# 3.找到元素
# 4.输入关键字
driver.find_element(By.NAME, "wd").send_keys("淘宝")
# 5.点击搜索
driver.find_element(By.ID, "su").click()
sleep(2)
# 6.验证结果  ---assert断言
"""
    断言,判断一个表达式(True/False)
    返回False --触发异常
    特性:条件不满足直接返回错误,不必在继续运行
"""
assert driver.title == "淘宝_百度搜索"
print("测试通过")

3、根据CLASS_NAME进行定位

          以百度输入框为例

          百度输入框class属性值为:"s_ipt"

    代码格式为:
driver.find_element(By.CLASS_NAME, "s_ipt").send_keys("淘宝")
    完整代码如下:
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
"""
    这就是完整的webUI搜索功能测试流程
"""
# 0.加载驱动
service = Service('E:\\driver\\chromedriver.exe')
# 1.打开浏览器
driver = webdriver.Chrome(service=service)
# 2.输入网址
driver.get("https://www.baidu.com/")
sleep(1)
# 3.找到元素
# 4.输入关键字
driver.find_element(By.CLASS_NAME, "s_ipt").send_keys("淘宝")
# 5.点击搜索
driver.find_element(By.ID, "su").click()
sleep(2)
# 6.验证结果  ---assert断言
"""
    断言,判断一个表达式(True/False)
    返回False --触发异常
    特性:条件不满足直接返回错误,不必在继续运行
"""
assert driver.title == "淘宝_百度搜索"
print("测试通过")

4、根据TAG_NAME进行定位

          以百度输入框为例

          百度输入框Tag_NAME属性"input"

    代码格式为:
driver.find_element(By.TAG_NAME, "input").send_keys("淘宝")
    完整代码如下:
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
"""
    这就是完整的webUI搜索功能测试流程
"""
# 0.加载驱动
service = Service('E:\\driver\\chromedriver.exe')
# 1.打开浏览器
driver = webdriver.Chrome(service=service)
# 2.输入网址
driver.get("https://www.baidu.com/")
sleep(1)
# 3.找到元素
# 4.输入关键字
driver.find_element(By.TAG_NAME, "input").send_keys("淘宝")
# 5.点击搜索
driver.find_element(By.ID, "su").click()
sleep(2)
# 6.验证结果  ---assert断言
"""
    断言,判断一个表达式(True/False)
    返回False --触发异常
    特性:条件不满足直接返回错误,不必在继续运行
"""
assert driver.title == "淘宝_百度搜索"
print("测试通过")
 

5、根据LINK_TEXT进行定位

      link定位是针对文本链接,我们不用管标签,直接通过文本就能定位。
       以百度搜索按钮为例
![](https://img-blog.csdnimg.cn/direct/e7145497cd43447da6476ce2f1beaa32.png)
      代码格式为:
driver.find_element(By.LINK_TEXT, "登录").click()
    完整代码如下:
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
"""
    link定位是针对文本链接,我们不用管标签,直接通过文本就能定位
    
"""
# 0.加载驱动
service = Service('E:\\driver\\chromedriver.exe')
# 1.打开浏览器
driver = webdriver.Chrome(service=service)
# 2.输入网址
driver.get("https://www.baidu.com/")
sleep(1)
# 3.找到元素
# 4.点击搜索
driver.find_element(By.LINK_TEXT, "登录").click()
sleep(5)
driver.quit()

6、根据PARTIAL_LINK_TEXT(模糊)定位

     模糊定位
      有时候一个链接文本很长,如果全部输入,又麻烦,又显得代码不美观。
      注意:如果匹配多个元素---我们使用时要小心,保证模糊搜索的唯一性。

     以百度搜索按钮为例
![](https://img-blog.csdnimg.cn/direct/e7145497cd43447da6476ce2f1beaa32.png)
       代码格式为:
driver.find_element(By.PARTIAL_LINK_TEXT, "录").click()
    完整代码如下:
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
"""
    模糊定位
    By.PARTIAL_LINK_TEXT
    有时候一个链接文本很长,如果全部输入,又麻烦,又显得代码不美观
    
    注意:如果匹配多个元素---我们使用时要小心,保证模糊搜索的唯一性
"""
# 0.加载驱动
service = Service('E:\\driver\\chromedriver.exe')
# 1.打开浏览器
driver = webdriver.Chrome(service=service)
# 2.输入网址
driver.get("https://www.baidu.com/")
sleep(1)
# 3.找到元素
# 4.输入关键字
# 5.点击搜索
driver.find_element(By.PARTIAL_LINK_TEXT, "录").click()
sleep(5)
driver.quit()

7、根据XPATH定位

    xpath定位方式策略:
         1.路径定位--绝对路径、相对路径
         2.利用元素属性定位
         3.层级与属性结合定位
         4.属性与逻辑结合定位

    查看xpath格式方式:首先点击所要定位的地方,然后右键点击检查,查看元素属性,找到所选择的元素,右键点击复制,然后选择复制xpath。如下所示。

    以百度首页新闻链接为例 ![](https://img-blog.csdnimg.cn/direct/234719064b9e4f97afa0b25b6f0f30b8.png)

    代码格式如下:
driver.find_element(By.XPATH, '//*[@id="s-top-left"]/a[1]').click()
    完整代码如下:
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
"""
    xpath定位方式策略:
        1.路径定位--绝对路径、相对路径
        2.利用元素属性定位
        3.层级与属性结合定位
        4.属性与逻辑结合定位
"""
# 0.加载驱动
service = Service('E:\\driver\\chromedriver.exe')
# 1.打开浏览器
driver = webdriver.Chrome(service=service)
# 2.输入网址
driver.get("https://www.baidu.com/")
sleep(1)
# 3.找到元素
# 4.输入关键字
# 5.点击搜索
driver.find_element(By.XPATH, '//*[@id="s-top-left"]/a[1]').click()
sleep(5)
driver.quit()

8、根据CSS进行定位

    css定位方式比xpath速度更快

    查看xpath格式方式:首先点击所要定位的地方,然后右键点击检查,查看元素属性,找到所选择的元素,右键点击复制,然后选择复制selector。如下所示。

    以百度首页输入框为例

    代码格式如下:
driver.find_element(By.CSS_SELECTOR, "#kw").send_keys("淘宝")
    完整代码如下:
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
"""
    这种方式相对xpath要相对简洁一些
    CSS层级定位     
"""
# 0.加载驱动
service = Service('E:\\driver\\chromedriver.exe')
# 1.打开浏览器
driver = webdriver.Chrome(service=service) 
# 2.输入网址
driver.get("https://www.baidu.com/")
sleep(1)
# 3.找到元素
# 4.输入关键字
driver.find_element(By.CSS_SELECTOR, "#kw").send_keys("淘宝")
# 5.点击搜索
driver.find_element(By.ID, "su").click()
sleep(5)
driver.quit()

本文转载自: https://blog.csdn.net/m0_73890953/article/details/139580627
版权归原作者 @旺仔牛奶 所有, 如有侵权,请联系我们删除。

“Selenium八大元素定位法”的评论:

还没有评论