- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为 <table>
重用找到的 WebElement下面搜索其后代和直接后代:
<html>
...
<table id="tbl">
<tbody>
<tr>
<td>
<div>foo</div>
</td>
</tr>
...
<tr><td><button class="btnDefault"/></td></tr>
</tbody>
</table>
...
</html>
此表可能包含嵌套表 - 也可能不包含,我只是不想费力地完成整个事情,我宁愿使用一个更具体的选择器来保证做我想做的事情。我需要的一些元素没有合理的 ID,我想使用选择器查找它们:
#tbl1 > tbody > tr:first-child > td:first-child > div
#tbl1 > tbody > tr > td > button.btnDefault
为了减少代码的重复性并提高速度,我想缓存 <table>
元素:
var table = driver.FindElement(By.Id("tbl"));
var div = table.FindElement(By.CssSelector("> tbody > tr:first-child > td:first-child > div"));
var button = table.FindElement(By.CssSelector("> tbody > tr > td > button.btnDefault"));
这会在第二个和第三个查询中作为无效的 CSS 选择器爆炸。这是正确的,但话又说回来,标准 CSS 语法并不意味着从特定范围进行搜索。是否有某种构造可以用作此处查询的根?
最佳答案
一个选项是使用伪类 :scope
来引用当前元素。
这个伪类存在于 Selectors Level 4 specification 中目前受 Firefox 和 Chrome 支持。但有些浏览器可能不支持它。
var table = driver.FindElement(By.Id("tbl"));
var div = table.FindElement(By.CssSelector(":scope > tbody > tr:first-child > td:first-child > div"));
var button = table.FindElement(By.CssSelector(":scope > tbody > tr > td > button.btnDefault"));
请注意,使用像“直接子代”这样的强依赖项通常会导致选择器脆弱,这会增加测试的维护成本。
关于c# - 如何在 Selenium 中使用 CSS 选择器查找非根元素的直接后代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47093744/
我们有几个聚合根,它们有两种主要的识别方法: 一个整数“键”,用作数据库中的主键(并通过引用聚合用作外键)以及应用程序内部的主键,并且无法通过公共(public)网络 API。 基于字符串的“id”,
据我所知,直到 angular 6 ,所有@Ngmodule 提供程序都在根注入(inject)器上注册并在主包中提供服务,即使只有延迟加载的模块使用它们。 唯一的异常(exception)是如果我们
我可以使用 创建文件 File directory = cw.getDir("media", Context.MODE_PRIVATE); //directory.mkdirs(); File b
我正在使用 Mavericks,XCode 5。 我想添加非根 URL 存储库例如svn://sources.xxx.com/xxx/xxx/xxx/xxx 我已经从XCode首选项->帐户尝试过,但
xmllint --xpath "//project" test.xml 失败了 4.0.0 但如果我像这样删除 xmlns 属性,则会成功: 4.0.0
我正在尝试从具有以下结构的深层链接打开 View Controller : # Regular navigation: AppDelegate -> A (root) -> B -> C # Deep
我正在尝试在标签栏内添加一个 Split View,由于 Split View不是 Root View ,因此它无法正确获取旋转通知,因此永远不会调用委托(delegate)的方法来添加按钮到详细 V
我正在关注 this document为我的 gunicorn 服务器设置 Systemd 套接字和服务。 Systemd 将 gunicorn 作为 www-data 启动 gunicorn for
我正在使用 wiringPi2-python 将覆盆子 GPIO 引脚从低电平切换到高电平,然后再切换回来。一切正常,但在它切换 pin 的值后立即抛出 Segmentation fault 并且程序
文档: https://learn.microsoft.com/en-us/graph/api/driveitem-createuploadsession?view=graph-rest-1.0 我可
我是一名优秀的程序员,十分优秀!