Как нажать на Dynami c XPath с кукловодом? - PullRequest
0 голосов
/ 28 января 2020

Мне нужно щелкнуть кукольником по динамике c xpath, но я не могу добиться соответствия пути.

Это динамический c путь, который мне нужно щелкнуть


 //[@id="Pfb41b20eb4b64727b5db3b2abea2187d_1_oReportCell"]/table/tbody/tr/td/table[2]/tbody/tr[3]/td[1]/div/a

Динамический c элемент начинается после P и заканчивается на первом _

И это то, что я пробовал до сих пор


const download = await page.$x('//id[contains("1_oReportCell")]/table/tbody/tr/td/table[2]/tbody/tr[3]/td[1]/div/a');

const download = await page.$x('//*[@id^="P"][@id$="_oReportCell"]/table/tbody/tr/td/table[2]/tbody/tr[3]/td[1]/div/a
');

Может кто-нибудь помочь мне, пожалуйста.

1 Ответ

0 голосов
/ 29 января 2020

В XPath 1.0 функция заканчивается через () может быть выражена как:

substring($string, string-length($string) - string-length($pattern) + 1) = $pattern

В вашем выражении XPath:

//[substring(@id, string-length(@id) - 12) = "1_oReportCell"]/table/tbody/tr/td/table[2]/tbody/tr[3]/td[1]/div/a

Редактировать : XPath 2.0+ имеет правильную функцию , завершающуюся с () , конечно.

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