gpt4 book ai didi

c# - 在 Selenium 中使用 Findelements 后如何找到一个元素?

转载 作者:行者123 更新时间:2023-11-30 12:22:14 25 4
gpt4 key购买 nike

我正在尝试创建这个全局方法,点击这个名为 "Categories" 的链接。 ID (t_166) 是动态的,Xpath (//*[@id="t_166"]) 和“复制选择器” (#t_166) 也使用 id 编号,因此它们将不起作用。

所以,我只剩下 html:

enter image description here

我认为 class 是一个不错的候选人。所以...开始:

var categorymenu = driver.instance.findelement(by.classname("fontMediumBigColorGrey navigatorLinkClicked z-label")

然后我希望它找到第一个类别并单击它,例如:categorymenu.getattribute(类别).click();

两个问题。

问题 1:链接的类别会根据您之前是否访问过它或其中的“linkclicked”部分而改变。如果您还没有使用它,它将变成“fontMediumBigColorGrey z-label”。问题:如果类别不同,将无法找到类别。我该如何处理?

问题 2:还有许多其他链接(如用户)使用相同的类,所以我不应该使用 findelements 然后通过属性(类别是这种情况)将其隔离但是 findelements 似乎不是能够使用 getattribute(因为有很多)那么我该如何涵盖这部分?

谢谢!

最佳答案

您可以使用 XPath 搜索来查找您的元素:

var categorymenu = driver.instance.findelement(by.xpath("//span[text()='Categories']")

在上面的代码中,您搜索以 "Categories" 作为其文本值的 span 元素

您也可以通过以下方式尝试忽略 id 属性的动态变化部分:

var categorymenu = driver.instance.findelement(by.xpath("//div[starts-with(@id, 't_')][substring-after(@id, '-')='cave']/span")

上面的代码应该搜索 spandiv 的子级,id="t_XXXX-cave" where XXXX被忽略的部分

注意您还应该知道,您将无法完成 categorymenu.getattribute(category).click(); 作为 categorymenu.getattribute( category)(实际上是 categorymenu.GetAttribute(category))只返回一个字符串值

关于c# - 在 Selenium 中使用 Findelements 后如何找到一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41591858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com