Как использовать индекс столбца из таблицы find по xpath в другом xpath? - PullRequest
0 голосов
/ 12 марта 2019

У меня есть строга xpath с индексом записи столбца. Но если бы у меня был столбец между двумя старыми столбцами, мой xpath нарушен. В моем примере 1 и 4 это индекс записи столбца в

//table[@id='users-table']/tbody//tr[td[1][text()='05680']]/td[4][text()='5 street']

поэтому у меня есть две секунды, когда xpath находит мои столбцы, и я хочу использовать в своем первом xpath.

//table[@id="users-table"]/thead/tr/th[text()='Phone']
//table[@id="users-table"]/thead/tr/th[text()='adress']

      +---------------------------------------- -+-------------+
      |  Phone | Name  |  Firstname   | adress   | add button  |
      +------------------------------------------+-------------+
      |  05678 | foo   |  toto        | 4 street | edit button |
      |  05680 | foo2  |  toto2       | 5 street | edit button |
      |  05689 | foo3  |  toto3       | 6 street | edit button |
      |  05690 | foo4  |  toto4       | 7 street | edit button |                                     
      +--------------------------------------------------------+
  • add button have id = "add-user-button"

резюме: Я хочу изменить 1 на //table[@id="users-table"]/thead/tr/th[text()='Phone'] и 4 на //table[@id="users-table"]/thead/tr/th[text()='adress']

тот же вопрос для поиска add button колонка

1 Ответ

2 голосов
/ 12 марта 2019

Если вы хотите получить столбец address на основе номера phone, вот xpath. Xpath является динамическим, поэтому вам не нужно беспокоиться, если позиции столбцов изменятся.

//table[@id='users-table']//td[.='05680' and position()=count(//th[normalize-space(.)='Phone']/preceding-sibling::th)+1]/ancestor::tr//td[position()=count(//th[normalize-space(.)='address']/preceding-sibling::th)+1]

Если вы хотите использовать оба значения address и phone в xpath, используйте ниже.

//table[@id='users-table']//td[.='05680' and position()=count(//th[normalize-space(.)='Phone']/preceding-sibling::th)+1]/ancestor::tr//td[ .= '5 street' and position()=count(//th[normalize-space(.)='address']/preceding-sibling::th)+1]

Если вы хотите нажать на кнопку на основе address и phone, используйте приведенный ниже xpath (при условии, что в строке есть только одна кнопка)

//table[@id='users-table']//tr[td[.='05680' and position()=count(//th[normalize-space(.)='Phone']/preceding-sibling::th)+1] and td[ .= '5 street' and position()=count(//th[normalize-space(.)='address']/preceding-sibling::th)+1]]//button

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

редактировать (добавить часть кнопки)

td[position()=count(//th/button[@id='add-user-button']/../preceding-sibling::th)+1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...