2015-01-08 2 views
0

У меня есть следующее заявление:Селен WebDrive (Java) - найти элемент в XPath, где нет конкретного атрибута

String v_name = "Computer"; 

String v_test1 = new WebDriverWait(Login.driver,10).until(ExpectedConditions.visibilityOfElementLocated 
       (By.xpath("//span[.=\""+v_name+"\"]/following-sibling::span"))).getText(); 

Мне нужно, чтобы как-то значение с не стиль = «дисплей: нет;».

<div class="test"> 
    <span>WIN-S38B7T042RC</span> 
    <span style="display: none;>CLOSED</span> 
    <span>OPENED</span> 
    <span style="display: none;>CLOSED</span> 
</div> 

Я не могу использовать такие опции, как span [1].

Итак, я хочу найти более гибкий вариант.

Что-то вроде: /following-sibling::span **not in** style="display: none;"

ответ

0

Я предлагаю вам использовать этот XPath, простой и Простейшая

//span[not(contains(@style, 'display: none;'))] 
+0

Я согласен, я использую его: //span[.=""+v_name+""]/following-sibling::span[not(contains(@ стиль, 'display: none;'))] – alekslkta

0

XPath является достаточно гибким; один из способов было бы что-то вроде этого:

By.xpath("//span[not(contains(@style, 'display: none;'))]/") 

или, возможно, даже что-то вроде этого:

By.xpath("//span[not(@style)]/") 

Конечно, вы также можете использовать что-то подобное тому, что вы пробовали, например,

By.xpath("//span[/following-sibling::span/@style]/") 

Но это, вероятно, сложнее, чем необходимо.

Имейте в виду, что ни одно из них не проверено, но они должны работать теоретически.

+1

Спасибо, я проверил один из них это найти для меня: // диапазон [. = "" + V_name + ""]/следующий-родственный :: span [not (содержит (@style, 'display: none;'))] – alekslkta

+1

Функция xpath text() не может работать с селеном. Исключение будет бросать –

+0

Есть ли способ сделать то же самое НЕ с помощью CSSSELECTOR? Я думаю, cssselector в этом случае будет работать быстрее – alekslkta

Смежные вопросы