#javascript #selenium #automated-tests
#javascript #селен #автоматизированные тесты
Вопрос:
Я новичок в автоматическом тестировании. Столкнувшись с такой проблемой, ранее в тесте я захожу в окно Iframe, чтобы ввести данные «тестовой карты». Вместо «страницы успеха» отображается модальное окно, на которое мне нужно нажать. Селен ругается.
…………..
await driver.switchTo().frame(driver.findElement(By.xpath('//*[@id="solid-payment-form-iframe"]'))).then.....
…………………………
`await button46.click().then(async function() {
bot.sendMessage(-100********, land "nTest completed!!✅");
console.log(button46.click,'SubmitButton - done');
return true//it existed
})
await driver.switchTo().defaultContent();
const number = await driver.wait(
until.elementLocated(By.xpath('//*[@id="specialOffer"]/div/div[2]/div[1]/a'))
// (By.xpath('//*[@id="specialOffer"]/div/div[2]/div[1]/a'))
, 20000).then(number => {
return driver.wait(
until.elementIsEnabled(number), 20000)})await number.click();`
Это то, что пишет консоль:
ElementClickInterceptedError: element click intercepted: Element <a href="************************************* is not clickable at point (960, 536). Other element would receive the click: <iframe id="solid-payment-************************
Selenium webdriver javascript удаленный сервер — selenoid(aerokube)
Ответ №1:
Чтобы щелкнуть элемент с помощью selenium element.click
, элемент должен быть видимым и интерактивным, но ваш элемент может находиться за пределами видимой области или за диалоговым окном. Попробуйте щелкнуть, введя javascript. Я работал с версией Selenium на Python, поэтому смотрите Код python и конвертируйте в соответствии с вашими потребностями:
driver.execute_script("arguments[0].click()", button46)
Комментарии:
1. мне нужно щелкнуть элемент ‘number’, если я удалил await driver.switchTo().defaultContent(); у меня следующая ошибка: ошибка времени ожидания: ожидание нахождения элемента с помощью (xpath, //*[@id=»specialOffer»]/div/ div[2]/div[1] / a) Время ожидания истекло после 20070 мс
2. Вы сказали, что удаление
await driver.switchTo().defaultContent();
вызывает ошибку, тогда не удаляйте ее, просто получите элемент таким образом и после этого введите javascript для нажатия кнопки. Возможно, вам потребуется просмотреть документы для вашей текущей версии selenium.3.
driver.execute_script("arguments[0].click()", number)
вместоnumber.click()
4. dropmefiles.com.ua/en/3xUR42MX
5. Прочитайте 2-й комментарий еще раз, вы не должны комментировать строку 880, поскольку вы сказали, что удаление этой строки вызывает ошибку.
Ответ №2:
ИСПРАВИТЬ ПРОБЛЕМУ:
await driver.sleep(5000)
const number1 = await driver.wait(until.elementLocated(By.xpath('//*[@id="specialOffer"]/div/div[2]/div[1]/a')))
await driver.executeScript("arguments[0].click()", number1)```
Комментарии:
1. Пожалуйста, рассмотрите возможность добавления объяснения к вашему ответу, чтобы все могли его понять