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

时间:2017-02-14 18:53:55

标签: c# selenium xpath selenium-webdriver

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

他们都有班级名称“按钮添加规则”

其中一个总是具有“deviceid”属性,它具有一定的价值,其中一个永远不会。

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

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

在尝试单击第一个按钮时有效,该按钮没有第二个属性。

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

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

2 个答案:

答案 0 :(得分:2)

尝试以下代码并告诉我结果:

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(); 

答案 1 :(得分:0)

正确实施。

请注意与原始帖子/问题相比使用不同的变量名称。

鉴于:

 parentRow = applicationNumberLinks[rowIndex].FindElement(By.XPath("../../../.")); 
 //ugly i know just bear with me

如果您想在该行中找到具有名称大于0的类的TD:

 cellsInRow = parentRow.FindElements(By.XPath(".//td[string-length(@class)>0]"));

至少,这就是我需要的东西。请尝试并修改您的具体用例