Selenium Tips:CSS选择器

Selenium Tips:CSS选择器

 

CSS Selector是元素选择器和标识网页中Web元素的值的组合。  它们是HTML标记,属性,Id和类的字符串表示。  因此,它们是与树中的元素匹配的模式,并且是可用于在XML文档中选择节点的若干技术之一。 

直接孩子(子类)

XPATH中的直接子节点是使用“/”定义的,而在CSS上,它是使用“>”定义的

例子:

<span style="color:#444444">XPath:// div / a 

CSS:div  >  a
</span>

子或子

如果一个元素可能在另一个元素或一个元素内部,则它在XPATH中使用“//”定义,而在CSS中仅使用空格定义。

例子:

<span style="color:#444444">XPath:// div // 

CSS:div  a
</span>

ID

XPATH中的元素id使用以下内容定义:“[@id='example']”并在CSS中使用:“#” - ID's must be unique within the DOM.

例子:

<span style="color:#444444">XPath:// div [ @id = <span style="color:#880000">'example'</span> ]

CSS:#example
</span>

对于类,XPATH中的东西非常相似:“[@class='example']”而在CSS中它只是“。”

例子:

<span style="color:#444444">XPath:// div [ @class = <span style="color:#880000">'example'</span> ]

CSS :. 例
</span>

二:先进

下一个兄弟姐妹

这对于导航元素列表(例如表单或ul项)非常有用。下一个兄弟将告诉selenium找到页面中位于同一父节点内的下一个相邻元素。让我们看一个使用表单选择用户名后字段的示例。

<form class =  “form-signin” role =  “form” action =  “/ index.php” method =  “post” >
<h4 class =  “form-signin-heading” > < / h4>
<input type =  “text” class =  “form-control” id =  “username” name =  “username” placeholder =  “username” required autofocus> < / br>
<input type =  “password” class =  “form-control” id =  “password” name =  “password” placeholder =  “password” required>
<P> 
<button class =  “btn btn-lg btn-primary btn-block radius” type =  “submit” name =  “login” > Login < / button>
< / form> 

让我们编写一个XPath和css选择器,它将在“username”之后选择输入字段。这将选择“别名”输入,或者如果重新排序表单将选择不同的元素。

<span style="color:#444444">XPATH://输入[@ id ='username'] / follow-sibling :: input [1]
 CSS:#username  +  input
</span>

属性值

如果您不关心子元素的排序,可以使用selenium中的属性选择器根据任何属性值选择元素。一个很好的例子是选择上面表单的'username'元素而不添加类。

我们可以轻松选择username元素,而无需向元素添加类或id。

<span style="color:#444444">XPATH://输入[ @name = <span style="color:#880000">'username'</span> ] 
CSS:输入[ name = <span style="color:#880000">'username'</span> ]
</span>

我们甚至可以使用我们的选择器来链接过滤器。

<span style="color:#444444">XPATH:// 输入[ @name = 'login'和@type = 'submit' ]
 CSS:输入[ name = 'login' ] [ type = 'submit' ]</span>

这里Selenium将在输入字段上执行name =“login”和type =“submit”

选择特定的比赛

Selenium中的CSS选择器允许我们使用上述方法更加精确地导航列表。如果我们有一个ul并且我们想要选择它的第四个li元素而不考虑任何其他元素,我们应该使用nth-child或nth-of-type。

<ul id = “recordlist” >

<LI>猫</ LI>

<LI>狗</ LI>

<LI>汽车</ LI>

<LI>山羊</ LI>

</ UL>

如果我们想在这个列表中选择第四个li元素(Goat),我们可以使用nth-of-type,它将在列表中找到第四个li。

<span style="color:#444444"><span style="color:#888888">CSS:#recordlist li:nth-​​of-type(4)</span>
</span>

另一方面,如果我们想要仅在它是li元素时获得第四个元素,我们可以使用过滤的第n个子元素,在这种情况下将选择(Car)。

<span style="color:#444444"><span style="color:#888888">CSS:</span><span style="color:#888888"> #recordlist li:nth-​​child(4)</span>
</span>

请注意,如果您没有为nth-child指定子类型,则允许您选择第四个子节点而不考虑类型。这在测试selenium中的css布局时可能很有用。

<span style="color:#444444"><span style="color:#888888">CSS:</span><span style="color:#888888"> #recordlist *:nth-​​child(4)</span>
</span>

子串匹配

Selenium中的CSS有一个有趣的功能,允许使用^ =,$ =或* =进行部分字符串匹配。我将定义它们,然后显示每个示例:

^ =匹配前缀

<span style="color:#444444">CSS:a [ id ^ = <span style="color:#880000">'id_prefix_'</span> ]
</span>

带有“id”的链接,以“id_prefix_”文本开头

$ =匹配后缀

<span style="color:#444444">CSS:a [ id $ = <span style="color:#880000">'_ id_sufix'</span> ]
</span>

带有“id”的链接,以“_id_sufix”结尾

* =匹配子字符串

<span style="color:#444444">CSS:a [ id * = <span style="color:#880000">'id_pattern'</span> ]
</span>

带有“id”的链接,其中包含文本“id_pattern”

按内部文本匹配

最后,一个更有用的伪类,:contains()将匹配具有所需文本块的元素:

<span style="color:#444444">CSS:a:包含(<span style="color:#880000">'注销'</span>)
</span>

这将在您的页面上找到注销按钮,无论它位于何处。这是我最喜欢的CSS选择器,我发现它大大简化了我的很多测试代码。

Sauce Labs - 云上的Selenium测试

Sauce Labs使自动化测试变得非常棒。我们基于云的平台可帮助开发人员在900多种浏览器/操作系统平台上测试本机和混合移动和Web应用程序,包括iOS,Android和Mac OS X.Sauce支持Selenium,Appium和流行的JavaScript单元测试框架,并与所有顶级编程语言,测试框架和CI系统。通过内置的视频录制和每个测试用例的屏幕截图,调试工具以及用于本地或防火墙测试的安全隧道,Sauce可以快速,轻松地运行,调试和扩展测试套件。 


分享此文章

免费试用

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Selenium使用CSS选择来定位和操作网页元素。CSS选择是一种通过CSS标记、类和属性等特征来选择元素的方法。通过使用CSS选择,可以更加灵活地定位元素,提高测试脚本的稳定性和可维护性。 在Selenium中,可以使用`By.cssSelector`方法来使用CSS选择。该方法需要传入一个CSS选择作为参数,来指定要定位的元素。例如,在Java中使用SeleniumCSS选择,可以像下面这样写: ```java import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class SeleniumCSSLocators { public static void main(String[] args) { WebDriver driver = new ChromeDriver(); driver.get("https://www.example.com"); // 使用CSS选择定位元素并进行操作 driver.findElement(By.cssSelector("input[name=username")).sendKeys("username"); driver.findElement(By.cssSelector("input[name=password")).sendKeys("password"); driver.findElement(By.cssSelector("button[type=submit")).click(); } } ``` 在上面的例子中,使用了三个不同的CSS选择来定位用户名输入框、密码输入框和提交按钮,并进行相应的操作。通过在`By.cssSelector`方法中传入相应的CSS选择字符串,就可以定位到对应的元素。 引用提供了关于Selenium CSS选择的问题定义,引用提供了相关来源,引用提供了一个示例代码来展示如何在Selenium中使用CSS选择定位元素。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [SeleniumCSS选择](https://blog.csdn.net/cunchi4221/article/details/107472314)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值