c# - Selenium:使用序列选择具有相似属性的元素
问题描述
需要一些关于我使用 c# 编写的 selenium 脚本的帮助。
我正在尝试通过使用“类”属性单击一个元素,但问题是,还有另一个类似的元素共享完全相同的属性,并且这个元素首先出现,因此我的点击是点击第一个元素
此外,“类”是该元素唯一可用的属性。
我要点击的元素是“progressTerm”类下的“cam-taxpicker-button”
<div id = "LeftDivision" class = "LeftFrame">
<div>
<div class="cam-taxpicker">
<div class="cam-taxpicker-button"></div>
</div>
</div>
<div class="progressTerm">
<div class="cam-taxpicker">
<div class="cam-taxpicker-button"></div>
</div>
</div>
</div>
有没有办法将这些元素保留在列表中并迭代到第二个元素然后才执行操作?这是最好的方法吗?
或者还有其他方法可以执行此操作吗?
提前谢谢了,
解决方案
为了找到具有相同属性的所有元素,您可以使用driver.FindElements();
selenium WebDriver 的方法。
因此,在您的情况下,为了找到所有具有类名 'cam-taxpicker-button' 的元素,您可以执行以下操作:
using System.Collections.ObjectModel;
ReadOnlyCollection<IWebElement> elements = driver.FindElements(By.ClassName("cam-taxpicker-button"));
现在它将为您提供与给定 ClassName 匹配的元素集合,如果只有两个元素,您可以通过执行以下操作单击第二个元素: elements[1].Click();
你也可以这样做driver.FindElement(By.XPath("//div[@class='cam-taxpicker-button'][2]")).Click();
,但在这种情况下,它总是会在整个 DOM 中找到具有给定类名的第二个元素。
推荐阅读
- windows - 在 Perl 的 Windows 下使 STDIN 无缓冲
- com - 如何查询已安装的“打包 COM”扩展点
- python - 使用 Embedding 和 Keras 根据前 K 天的所有新闻预测股票趋势
- google-cloud-platform - 激活 GCP windows 服务器虚拟机失败
- android - 异步等待不等待输出返回
- laravel - 在 laravel Nova 中热显示名称而不是 id
- docker - 如何以 docker 容器用户的身份挂载 docker 卷?
- argocd - 未找到 argocd synchfailed ocp 资源“”
- javascript - 每当我尝试在应用程序的客户端注册时,我都会收到 POST 400(错误请求)错误
- itfoxtec-identity-saml2 - ITfoxtec.Identity.Saml2 登录示例