Есть ли способ найти кнопку по двум ее свойствам в Puppeteer? - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь нажать кнопку с помощью кукловода, и я пытаюсь найти ее по двум ее свойствам, aria-describedby и title, потому что у нее нет идентификатора. Значение свойства aria-описано by - это заданное мной имя, однако последние два символа - это числа, которые автоматически меняются на случайные числа.

Я искал вопросы регулярного выражения, вопросы JS, коды кукловода, но ничего такого, что действительно работало.

Самое близкое, с чем я пришел, это:

//v1
const arr = await page.$x('//button[starts-with("aria-describedby", "someName")]');
await arr[1].click();

//v2
page.click('button[aria-describedby="someName20"][title="Click button"]');

Я пробовал разные коды, но почти всегда получаю undefined или no node found for selector

Ответы [ 2 ]

1 голос
/ 07 мая 2019

Вы можете попробовать селектор запуска css (^=):

button[aria-describedby^="someName"][aria-label="Click button"]
0 голосов
/ 04 мая 2019

Мне не хватает html-кода, поэтому сложно точно определить ответ, но всякий раз, когда у меня есть динамические селекторы, для щелчка по которым нужны два параметра, я ищу по тексту:

let toClick = await page.$x("//button[contains(text(),'someName20')][contains(text(),'Click button')]");

await toClick[0].click();

Примечание: метод text () работает только с текстовыми узлами (т. Е. <a>someName20</a>), но вы можете поменять первое или второе выражение в скобках, чтобы запросить значение свойства вместо текстового значения элементов.

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