使用标签名和文本(CSS)查找元素

问题描述 投票:0回答:1

我们已经接管了对公司内一个组织的支持,该组织每年发布一次新版本。原来的代码不是我们写的。

我在搜索框中输入了一个名字,并得到了几个选项(见图 1)。这给了我如图 2 所示的 html。由于我是从影子根找到的,所以我需要执行 findElement(By.cssSelector) 而不是 By.xpath()。 Picture 1

之前的代码使用“mark[.='Anthony Chamberlain']”。我不知道这是否有效。如果我只使用“mark”作为 CSS 选择器,它可以正常工作,但会选择第一个,这可能是好的,也可能不是。我尝试过“mark[.='Anthony Chamberlain']”, “mark[innerText='Anthony Chamberlain'] 和“mark[textContent='Anthony Chamberlain']”(我在标记前加了一个空格以进行递归搜索。

我使用“.=”的地方给了我一个无效的选择器错误。另外两个只是超时并且找不到元素(但选择器是有效的)。我已经进行了谷歌搜索,但仍然不清楚该怎么做。如果我可以使用 xpath,它将是“.//mark[.='Anthony Chamberlain']”,但我不能。

有什么建议吗?我更想找到它上面的div (如“//div[./mark[.='安东尼·张伯伦']]”)

我不确定我是否正确上传了图片 1,但它是一个输入字段,下面有匹配的选择。

正确的 css 定位器是什么?请记住,只需“标记”即可。

java css-selectors shadow-root
1个回答
0
投票

您不能使用 css 选择器来测试节点内容。

请参阅此处获取完整文档:https://drafts.csswg.org/selectors/

如果您想获取

mark
节点,可以根据上述文档使用
mark[class*="has-highlight"]
css-选择器。然后您可以在
js
中测试
result.innerText
=== 'Anthony Chamberlain'

E[foo*="bar"] 语法:一个 E 元素,其 foo 属性值包含子字符串 bar

© www.soinside.com 2019 - 2024. All rights reserved.