c# - 从 FindElements() 获取更多 Web 元素类型 - Selenium c#
问题描述
大家好,你能帮我解决我的问题吗?我有方法可以检查页面上是否预设了多个 Web 对象,如果是,那么我单击它们,它按预期工作,但是我喜欢只使用一个 FindElements(),这可能吗?有人能告诉我怎么做吗?谢谢
我的元素:
public static class Elements
{
public static string allow = "//button[@data-testid='allow']";
public static string addToHomescreen="//button[@datatestid='addToHomeScreen']";
}
我在 for 循环中的方法:
var allow = driver.FindElements(By.XPath(Elements.allow));
var addToHS = driver.FindElements(By.XPath(Elements.addToHomescreen));
var newLike = driver.FindElements(By.XPath(Elements.like));
if(allow.Count == 0 && addToHS.Count == 0 newLike.Count > 0)
{
driver.FindElement(By.XPath(Elements.like)).Click();
}
else if(allow.Count > 0)
{
allow[0].Click();
Utils.Wait(1);
driver.FindElement(By.XPath(Elements.like)).Click();
}
我想要类似但无法完成的事情:
var allPopups= driver.FindElements(By.XPath(Elements.allow),By.XPath(Elements.addToHomescreen),);
我只需要 FindElements() 返回更多类型的元素,但我无法弄清楚语法。谢谢
解决方案
您可以自己执行此操作,在 中xpath
有or
关键字xpath
。
public static string allow_addToHomescreen = "//button[@data-testid='allow' or @datatestid='addToHomeScreen']";
以下也是等价的:-
public static string allow_addToHomescreen = "//button[@data-testid='allow' | @datatestid='addToHomeScreen']";
查看更多详情请点击这里
推荐阅读
- kubernetes - 节点导出器 node_sockstat_TCP_alloc 与 node_netstat_Tcp_CurrEstab 不一致
- git - 为什么 VScode 不断打开我的用户文件夹作为存储库?
- maven - Mapstruct - 找不到符号 [Kotlin + Maven]
- javascript - 在动态创建的元素上按类 AddEventListener
- html - 在私有 IP 地址上部署内容?
- reactjs - 使用 S3 和 CloudFront 反应 App url 参数
- excel - 使用联合函数组合范围的错误消息
- javascript - 使用 rest api 在 SharePoint 组中添加用户不起作用
- javascript - 在 React 中使用 useContext 使状态在整个应用程序中可用
- c++ - 区分逗号运算符与逗号分隔符的麻烦