2017-02-14 87 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