查找具有href内容的链接

4
我使用了这部分代码:

https://dev59.com/M3HYa4cB1Zd3GeqPKmHp#16209027

在我的情况下,我想选择链接中href属性包含单词“edit”的链接
IWebElement link = driver.FindElementByCssSelector("[href*='edit']");

如果我没记错的话,*= 用于检查 href 是否包含单词 edit。
问题在于当我运行这行代码时,会出现以下错误:

enter image description here

但是链接确实存在:

enter image description here

我不知道运行时的完整href。因此,我必须找到一种方法使其灵活,并仅查找单词“edit”。 显然我做错了什么,但我找不出来。有人能帮我吗?

你应该意识到,在 Selenium 中,通过 css 查找选择器非常慢,是吗?最快的选项永远是 idxpath - Brian
@Brian 感谢,不,我不知道。它没有任何 ID,但如果最终遇到性能问题,我会改为使用 XPATH。谢谢。 - phadaphunk
2
其实,不要使用Xpath。我的一个同事刚刚读到我们在Selenium中不应该使用xpath,所以我会承认错误。 - Brian
1个回答

5

这将是区分大小写的:

IWebElement link = driver.FindElementByCssSelector("[href*='Edit']");

(大写字母 'E')

感谢 MrTi 指出,实际上,您可以更进一步的操作:

IWebElement link = driver.FindElementByCssSelector("a[href^='/Users/Edit/']");

这将被翻译为“以/Users/Edit开头的锚点元素——如果您的链接始终以此开头,显然,这将是一个更可靠的选择器。

您指出您只能查找单词“Edit”,所以上述方法可能对您来说并不太好,但这值得考虑。仅查找“Edit”本身并不太好——如果页面上还有其他包含该单词的链接怎么办?


1
我认为更好的CSS选择器是a[href^='/Users/Edit/'] - Nathan Merrill
@MrTi,非常正确,已经编辑!虽然他提到只能寻找“编辑”,但我已经加入了您的建议,让他考虑一下。 - Arran
1
我可以更进一步地说,a[href^='/Users/Edit']a[href^='/Users/Edit/'] 更安全 :) - ddavison

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接