2016-06-03 4 views
1

Первый XPath работает в то время как не вторая:Не работает селеном XPath

Первое:

"//*[@id='j_idt46:j_username']"; 

Второе:

"//*[contains(@id,'username']"; 

Почему?

+3

Возможно, потому что у вас отсутствует закрывающая скобка? Попробуйте '' // * [содержит (@ id, 'username')] ";' (с закрывающей скобкой после '' username''). – TuringTux

+1

какая ошибка вы получаете? было бы хорошо, если бы вы могли поделиться html для одного и того же элемента и всего кода (добавить язык также), используя/ – nullpointer

+1

Спасибо! Только забыли закрытие кронштейна. – gartenkralle

ответ

2

Для того, что можно было высчитать из предоставленной информации, то, как вы используете, возможно, содержит неприемлемый:

  1. Как отметил @TuringTux - //*[contains(@id,'username')] может быть возможно изменением, если же подкладка идет как это в вашем коде.

  2. Также следует принять надлежащую практику в //*[contains(@id,'username')], заменив * на тип элемента в html.

  3. И, наконец, при попытке доступа к элементам с использованием //*[contains(@id,'username')] может возникнуть вероятность того, что вы получите список этих похожих WebElements, хотя вы, возможно, пытаетесь получить доступ только к одному в одно и то же время.

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