2017-02-14 99 views
1

我在页面/表单中有两个按钮。如何通过非空属性和ID查找元素?

他们都有的类名称“按钮添加规”

其中一人总是有“设备ID”是有一定价值的属性,其中一人从来不会。

当我把这些按钮我的测试脚本中,我尝试使用这个CSS选择器

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

尝试点击第一个按钮,它没有第二个属性时的作品。

但是当测试脚本命中,当提及的代码相同的段时,第二个按钮(具有相同的类名称加上设备ID属性),因为该元素是不可见的失败。

我们如何引用第二个按钮共享一个类的名字与另一个按钮,但有“设备ID”的次级属性?

+0

做这些按钮有什么其他属性?你能为这些提供html吗? – mrfreester

+0

@mrfreester请参见下面如果u需要的代码 – kevin

回答

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

哎@Andersson感谢您的答复我的回答,我迟来回覆。请参阅下面的答案。 – kevin

0

正确实施。

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

考虑:

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

如果u希望找到具有类,其中名称是行内的阵大于0:

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

至少,这是什么工作为我所需要的。请尝试和修改您的特定使用案例

+0

如果你还没有试过@Andersson的答案,我会给那个人一个镜头。似乎它会更可靠并清楚您点击哪个按钮。 – mrfreester