Что делать для динамического изменения xpaths в Python с использованием селена? - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть xpath как:

//*[@id="jobs-search-box-keyword-id-ember968"]

Число 968 постоянно меняется после каждой перезагрузки. Остальная часть строки остается постоянной.

Как мне найти постоянно меняющиеся xpath?

Ответы [ 3 ]

0 голосов
/ 18 ноября 2018

Вы можете попробовать использовать starts-with ниже,

//*[starts-with(@id,'jobs-search-box-keyword-id-ember')]
0 голосов
/ 19 ноября 2018

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

В //*[@id="jobs-search-box-keyword-id-ember968"] последнее число 968 постоянно меняется.но если вы сделаете это как //*[starts-with(@id,'jobs-search-box-keyword-id-ember')], тогда может быть возможность, что у вас может быть более одного элемента с одинаковым частичным, то есть jobs-search-box-keyword-id-ember, в этом случае он будет расположен на 1-м соответствующем элементе.это не может быть ожидаемым

  1. Использование имени тега позволяет сказать, что элемент является входным тегом с идентификатором jobs-search-box-keyword-id-ember968

    Xpath - //input[starts-with(@id,'jobs-search-box-keyword-id-ember')]

    CSS - input[id^='jobs-search-box-keyword-id-ember']

  2. Используйте соответствующий родительский элемент, чтобы сделать это более конкретным.например, элемент находится в родительском теге <div class="container">

    Xpath- //div[@class='container']//input[starts-with(@id,'jobs-search-box-keyword-id-ember')]

    CSS - div.container input[id^='jobs-search-box-keyword-id-ember']

0 голосов
/ 18 ноября 2018

Вы можете использовать частичное id с contains()

//*[contains(@id, "jobs-search-box-keyword-id-ember")]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...