Selenium实现元素定位

2779 篇文章 4 订阅
2619 篇文章 15 订阅

Selenium提供了定位元素的方法find_element(),该方法被定义在WebDriver类中。


一、参数

1、两个参数,参数1根据不同定位方法确定,定位方法如下:

(1)通过id定位:使用参数By.ID定位元素的ID属性;

(2)通过元素名定位:使用参数By.NAME定位元素的NAME属性;

(3)通过标签名定位:使用参数BY.TAG_NAME定位元素的TAG_NAME属性;一般不使用该参数,使用该参数后方法会返回list,不能准确定位所找元素

(4)通过xpath定位:使用参数By.XPATH通过xpath表达式定位元素;

(5)通过css class定位:使用参数By.CLASS_NAME定位元素的class属性;

(6)通过css选择器定位:使用参数By.CSS_SELECTOR通过CSS选择器定位元素;

(7)通过链接文本定位:使用参数By.LINK_TEXT定位元素

(8)通过部分链接文本定位:使用参数By.PARTIAL_LINK_TEXT定位元素

2、参数2为上述对应属性的值

如何确定参数2:打开网页,选择任意元素,比如输入框,按钮,右键单击检查,就会有对应属性出现。以百度为例:


image


image


By.ID="kw"
By.NAME="wd"
By.TAG_NAME="input"
By.CLASS_NAME="s_ipt"
By.XPATH和By.CSS_SELECTOR可右键单击该元素,直接复制
By.LINK_TEXT和By.PARTIAL_LINK_TEXT为页面上任意链接文本,比如百度页面上的"新闻","首页"等,均可作为其值,两者区别在于,前者为链接的全部文本,后者为链接的部分文本


image


二、返回值

返回一个WebElement对象,这个对象代表页面上的一个元素


三、简单的代码示例

以下是一个简单的示例代码,展示如何使用find_element()方法通过各个属性定位元素

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

#将各个元素定位方法封装成一个类
class TestCase:
    #初始化方法
    def __init__(self):
        #驱动程序打开浏览器
        self.driver=webdriver.Edge()
        #跳转对应网页
        self.driver.get("http://www.baidu.com")
        #网页最大化
        self.driver.maximize_window()

    #通过id定位元素
    def test_id(self):
        #网页中定位到输入框,输入关键词python
        self.driver.find_element(By.ID,"kw").send_keys("python")
        #定位到按钮并点击搜索
        self.driver.find_element(By.ID,"su").click()
        sleep(2)
        quit()

    #通过name定位元素
    def test_name(self):
        self.driver.find_element(By.NAME,"wd").send_keys("selenium")
        self.driver.find_element(By.ID,"su").click()
        sleep(2)
        quit()

    #通过xpath定位元素
    def test_xpath(self):
        self.driver.find_element(By.XPATH,"//*[@id='kw']").send_keys("selenium")
        self.driver.find_element(By.XPATH,"//*[@id='su']").click()
        sleep(2)
        quit()

    #通过CSS_SELECTOR定位
    def test_css_selector(self):
        self.driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("selenium")
        self.driver.find_element(By.CSS_SELECTOR,"#su").click()
        sleep(2)
        quit()

    #通过CSS_NAME定位元素
    def test_class_name(self):
        self.driver.find_element(By.CLASS_NAME,"s_ipt").send_keys("selenium")
        self.driver.find_element(By.ID,"su").click()
        sleep(2)
        quit()

    #通过LINK_TEXT定位元素
    def test_link_text(self):
        #网页中找到"贴吧"文本的链接并点击
        self.driver.find_element(By.LINK_TEXT,"贴吧").click()
        sleep(2)
        quit()

    #通过PARTIAL_LINK_TEXT定位元素
    def test_partial_link_text(self):
        #网页中找到含有"AI"文本的链接并点击
        self.driver.find_element(By.PARTIAL_LINK_TEXT,"AI").click()
        sleep(2)
        quit()

if __name__ == "__main__":
    testcase = TestCase()
    #testcase.test_id()
    #testcase.test_name()
    #testcase.test_xpath()
    #testcase.test_css_selector()
    #testcase.test_class_name()
    #testcase.test_link_text()
    testcase.test_partial_link_text()

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

在这里插入图片描述

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值