使用CSS选择器定位页面元素

本文介绍了在Web自动化测试中如何使用CSS选择器精确地定位页面元素。涵盖了标签、类、ID、关系及属性等多种选择器类型,并通过实例展示了它们的具体应用。

  之前总结了使用ID,Name,Xpath等方式来定位页面元素,其实CSS选择器也是一个非常好用的定位元素的方法,甚至比Xpath强大。在自动化里我们用CSS选择器来定位页面元素一定要牢记一个准则:唯一定位,通常使用CSS选择器修改样式时会尽量多的选择元素,但是,在自动化里,必须要唯一定位到元素,否则自动化很可能因为找不到页面元素而失败。CSS选择器有很多,像标签选择器、类选择器、ID选择器、关系选择器、伪类选择器、分组选择器等等,但是只需要掌握常用的几种就可以满足定位元素的需求。

以下述HTML为例,总结下CSS选择器的用法:

<div id="menu" class="menu" title="menu">  
    <ul>  
        <li id="first" class="catagory book">  
            <a id="book"></a>  
        </li>  
        <li id="second" class="catagory food">  
            <a id="food"></a>  
        </li>  
        <li>  
            <a id="clothes"></a>  
        </li>  
        <li title="submenu">  
            <a id="furniture"></a>  
        </li>  
    </ul>  
    <a href="....">Welcome to Our Store</a>  
</div> 

1. 标签选择器

使用HTML标签来选择元素,例如: 

driver.findElement(By.cssSelector("li"));   //将选择所有li元素

driver.findElement(By.cssSelector("a")); //将选择所有a元素

2. 类选择器

使用类名来选择元素,使用方法:.class, 例如:

driver.findElement(By.cssSelector("div.menu")); //将选择class为menu的div元素driver.findElement(By.cssSelector(".catagory")); //将选择id为first的元素和id为second的元素,因为这两个元素的class里都含有catagory

3. ID选择器

使用ID来选择元素,使用方法:#id,例如:

driver.findElement(By.cssSelector("a#clothes")); //将选择id为clothes的a元素

也可以写成:

driver.findElement(By.cssSelector("#clothes")); //因为id是唯一的所以还是会选择id为clothes的a元素

3. 关系选择器

a.div,p 作用:选择所有div元素和p元素

b.div>p 作用:选择div的直接子元素中的所有p元素

c. div p   作用:选择div的后代元素中的所有p元素

4. 属性选择器

a. [title]   作用:选择所有具有title属性的元素

b. [title='menu']   作用:选择所有title属性值等于'menu'的元素

c. [title~='menu']   作用:选择所有title属性值包含menu的元素,注意:menu必须是一个word,

且有空格与其他单词分开

d. [title*='menu']   作用:选择所有title属性值包含menu的元素,注意:此时menu为substring,而不是word

e. [title|='menu']   作用:选择所有title属性值以menu开头或者等于menu的元素

f. [title^='menu']   作用:选择所有title属性值以menu开头的元素

g. [title$='menu']   作用:选择所有title属性值以menu结尾的元素

h. div[title='menu']   作用: 选择所有title属性值等于menu的div元素

4. 通用选择器

方法:*

例如: div ul *; //选择div ul 下的所有子元素,包括li和a元素

5. 伪类选择器

伪类选择器很多,只总结下用过的:nth-child(n)

例如:p:nth-child(2) 作用:选择作为第二孩子的p元素

在UI自动化测试中,CSS选择器是一种强大的工具,用于定位页面上的元素。这种方法利用了网页中元素的结构和样式特征,能够高效、精准地找到目标元素CSS选择器支持多种定位方式,包括但不限于通过元素的ID、类名、属性等进行定位。 - 使用ID定位元素是最直接的方式,因为ID在页面中是唯一的。例如,`*[id='myElement']`可以用来选择具有ID为`myElement`的元素[^2]。 - 类名选择器也非常常用,特别是当多个元素共享相同的样式时。使用`.myClass`可以选择所有类名为`myExample`的元素。 - 属性选择器提供了更灵活的定位方式,允许根据元素的具体属性进行定位。比如,`input[type='text']`可以用来选择所有的文本框输入元素[^2]。 此外,CSS选择器还支持复杂的组合选择器,如父子层级关系选择器和兄弟元素选择器,这使得即使在复杂的页面结构中也能准确地定位到目标元素。例如,`span>input`可以用来定位位于`span`标签内的`input`元素,而`div+input`则可以用来定位紧接在`div`元素之后的`input`元素[^4]。 当使用CSS选择器进行元素定位时,需要注意页面结构的变化可能会对选择器的有效性产生影响。因此,在实际应用过程中,可能需要根据页面的具体结构调整选择器,以确保元素能够被正确地定位[^1]。 以下是一个简单的示例,展示如何使用Selenium WebDriver通过CSS选择器定位并操作页面元素: ```python from selenium import webdriver import time # 创建浏览器驱动对象 driver = webdriver.Chrome() # 打开百度网站 driver.get("https://www.baidu.com") # 通过CSS选择器定位到输入框并输入"百度一下,你就知道!" driver.find_element_by_css_selector("span>input").send_keys("百度一下,你就知道!") # 等待3秒 time.sleep(3) # 退出浏览器 driver.quit() ``` 此代码片段演示了如何使用CSS选择器定位百度首页的搜索框,并向其中输入特定的文本,然后等待几秒钟后关闭浏览器窗口。这个例子展示了CSS选择器在UI自动化测试中的基本用法。 综上所述,CSS选择器因其简洁性和灵活性,在UI自动化测试中被广泛采用作为元素定位的一种主要手段。不过,选择合适的定位策略还需要考虑页面的具体结构和元素的特点,以便达到最佳的测试效果[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值