Кукловод: Не могу нажать на вход [type = radio] - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь получить доступ к кликабельному радиоприемнику, используя Puppeteer для продвижения в опросе моего приложения.Ниже приведены селектор и теги xpath.

Селектор:

#survey-engine > span > div > div > div > div > div.col-xs-12.col-xl-offset-2.col-xl-8.col-lg-offset-1.col-lg-10 > div > div:nth-child(1) > input[type="radio"]

XPath:

//*[@id="survey-engine"]/span/div/div/div/div/div[2]/div/div[1]/input

Мне не удалось добраться до xpath или селектора для работыправильно.Я также попытался использовать ниже, но не повезло.Смотрите ошибку с помощью селектора:

>UnhandledPromiseRejectionWarning: AssertionError [ERR_ASSERTION]: No node found for selector: #survey-engine > span > div > div > div > div > div.col-xs-12.col-xl-offset-2.col-xl-8.col-lg-offset-1.col-lg-10 > div > div:nth-child(1) > input[type="radio"]
    at Console.assert (console.js:194:23)
    at Frame.click (/Users/erickloos/Desktop/phs-platform/node_modules/puppeteer/lib/FrameManager.js:597:13)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)
(node:48518) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:48518) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
(await page.$x("//input[contains(text(), 'My Input's Text')]"))[0];

У кого-нибудь есть идеи?

Ответы [ 2 ]

0 голосов
/ 01 мая 2018
await page.evaluate(() => {
       var test = document.querySelector('#survey-engine > span > div > div > div > div > div.col-xs-12.col-xl-offset-2.col-xl-8.col-lg-offset-1.col-lg-10 > div > div:nth-child(1) > input[type="radio"]')
        test.click();
    })
0 голосов
/ 26 апреля 2018

Не можете ли вы просто попробовать (при условии, что jquery находится на странице)?

var input = await page.evaluate(() => {
  return $('#survey-engine > span > div > ... > div:nth-child(1) > input[type="radio"]';
});

Примечание Я удалил некоторые селекторы из вашего вопроса для краткости...

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