#java #eclipse #selenium #selenium-webdriver
Вопрос:
У меня есть веб-сайт, на котором я хочу запустить полный процесс работы с корзиной. Все идет хорошо, пока я не нажму на Способ оплаты и не выберу Дебетовую карту и.При вводе данных в поле он не принимается. Как я могу поместить данные в поля. Вот ссылка на веб-сайт для тестирования: https://vapesuite.allomate.решения/#/ . Ниже приведен код для ввода данных в поля.
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//iframe[contains(@name, 'zoid__paypal_buttons')]")));
System.out.println("We have selected Credit card method");
Thread.sleep(5000);
WebElement debitCreditCardButton = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//span[text()='Debit or Credit Card']")));
debitCreditCardButton.click();
Thread.sleep(5000);
driver.switchTo().defaultContent();
js.executeScript("window.scrollBy(0,800)");
//Here is the problem, the below path not working
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id="credit-card-number"]"))).sendKeys("4111111111111111");
Комментарии:
1. в чем заключается ошибка ?
2. Вот скриншот ошибки: prnt.sc/1670u4y
Ответ №1:
Существуют вложенные фреймы :
номер карты, похоже, в
div[id^='zoid-paypal-card-fields-uid_']
фрейм.
используйте этот код :
debitCreditCardButton.click();
Thread.sleep(5000);
driver.switchTo().defaultContent();
js.executeScript("window.scrollBy(0,800)");
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.cssSelector("div[id^='zoid-paypal-card-fields-uid_']")));
// and then send keys to card number input field.
wait.until(ExpectedConditions.elementToBeClickable(By.id("credit-card-number"))).sendKeys("4111111111111111");
Комментарии:
1. Я пробую ваш код, но он показывает ошибку: prnt.sc/1672u50
2. моя вина ! вместо этого используйте этот css
iframe[name^='__zoid__paypal_card_fields__']
вместоdiv[id^='zoid-paypal-card-fields-uid_']
3. Я
iframe[name^='__zoid__paypal_card_fields__']
снова думаю внутри//iframe[contains(@name, 'zoid__paypal_buttons')]
, так что нет смысла делатьdriver.switchTo().defaultContent();
— удалите это, а затем попробуйте4. @Zaman10 : Я не могу вам ответить. Эта тема не позволяет мне ничего вводить
5. Я отправил вам приглашение на чат. не могли бы вы, пожалуйста, пообщаться в чате на StackOverflow?