2017-02-14 14 views
1

У меня есть две кнопки на странице/форме.Как найти элемент с помощью атрибута null и идентификатора?

Они оба имеют имя класса «кнопки добавить регулирование»

Один из них всегда имеет атрибут «DeviceID», который имеет какое-то значение, и одна из них никогда не делает.

Когда я ссылаюсь на эти кнопки в моем тестовом сценарии, я попытался с помощью селектора CSS

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

, который работает при попытке нажать на первую кнопку, которая не имеет второй атрибута.

Но когда тестовый скрипт попадает в тот же фрагмент кода, когда ссылается на вторую кнопку (которая имеет одно и то же имя класса PLUS атрибут deviceID), она терпит неудачу, потому что элемент не отображается.

Как мы ссылаемся на эту вторую кнопку, которая совместно использует имя класса с другой кнопкой, но имеет вторичный атрибут «deviceid»?

+0

Какие еще атрибуты имеют эти кнопки? Можете ли вы предоставить html для них? – mrfreester

+0

@mrfreester см. Мой ответ ниже, если вам нужен код – kevin

ответ

2

Try ниже код и дайте мне знать результат:

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

hey @Andersson благодарит за ответ, и извините за мой поздний ответ. см. мой ответ ниже. – kevin

0

Правильная реализация.

Обратите внимание, что использование разных имен переменных по сравнению с исходным сообщением/вопросом.

Дано:

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

если и хотят, чтобы найти TDs в пределах этой строки, которые имеют класс, где имя больше, чем 0:

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

По крайней мере, это то, что работает для чего мне нужно. Пожалуйста, поэкспериментируйте и измените в своем конкретном случае использования

+0

Если вы не пробовали ответить @Andersson, я бы дал вам один выстрел. Похоже, было бы более надежно и понятно, какую кнопку вы нажимаете. – mrfreester