c# - 如何通过非null属性和ID查找元素?

标签 c# selenium xpath selenium-webdriver

我在页面/表单中有两个按钮。

它们都具有“按钮添加规则”的类名称。

其中之一始终具有“ deviceid”的属性,该属性具有一定的值,而其中之一则从未如此。

当我在测试脚本中引用这些按钮时,我尝试使用此CSS选择器

FindElement(By.CssSelector(".button.add.regulation")).Click();  


尝试单击不具有第二个属性的第一个按钮时,该按钮有效。

但是,当测试脚本在引用第二个按钮(具有相同的类名加上deviceID属性)时命中相同的代码片段时,它将失败,因为该元素不可见。

我们如何引用与另一个按钮共享类名但具有次要属性“ deviceid”的第二个按钮?

最佳答案

尝试下面的代码,让我知道结果:

FindElement(By.XPath("//button[@class='button add regulation' and @deviceid]")).Click();  


这应该与具有deviceid属性的按钮匹配

如果两个按钮都具有deviceid属性,而其中只有一个按钮不为空deviceid

FindElement(By.XPath("//button[@class='button add regulation' and string-length(@deviceid)>0]")).Click(); 

关于c# - 如何通过非null属性和ID查找元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42234056/

相关文章:

c# - 如何使用ConfigurationManager解析app.config?

c# - ASP.NET Core MediatR 错误 : Register your handlers with the container

c# - Console.ReadLine()。ToString()生成错误

c# - 数据源很大时DataSet的使用?

python - 如何使用 Selenium RC 保存和恢复所有 cookie?

java - 在 Selenium 中使用带有水平滚动条的 WebTables

python - 使用 XPath 检索 span 类中的文本

python - Python 中的网页抓取,与路径混淆

xml - XPath选择

python - 我怎样才能用python找到我的IP地址而不是本地IP?