Невозможно нажать на кнопку, присутствующую в iframe, с помощью веб-драйвера selenium и java - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь нажать кнопку «Продолжить» по указанному ниже URL, но у меня ничего не работает. Я пробовал метод click (), класс Action и JavaScriptExecuter, но ничего не работает. Ниже приведен мой код.

System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir")+ "\\src\\main\\resources\\All_Drivers\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://demo.midtrans.com/");
driver.manage().window().maximize();
driver.findElement(By.xpath("//a[@class='btn buy']")).click();
driver.findElement(By.xpath("//div[@class='cart-checkout']")).click();
WebElement frame = driver.findElement(By.id("snap-midtrans"));
driver.switchTo().frame(frame);
WebDriverWait wait = new WebDriverWait(driver,20);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='text-button-main']/span")));
//Continue Button
WebElement elem = driver.findElement(By.xpath("//div[@class='text-button-main']/span"));
Actions action  = new Actions(driver);
action.moveToElement(elem, 561, 526).click().build().perform();
driver.quit();

Любое предложение будет оценено.

1 Ответ

0 голосов
/ 23 марта 2020

Поскольку требуемый элемент находится в пределах <iframe>, чтобы найти его, вам необходимо:

  • Ввести WebDriverWait для требуемого frameToBeAvailableAndSwitchToIt().
  • Induce WebDriverWait для нужного elementToBeClickable().
  • Вы можете использовать любой из следующих Стратегий локатора :

    • Использование CSS_SELECTOR:

      new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.cssSelector("iframe#snap-midtrans")));
      new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.cssSelector("div.text-button-main>span"))).click();
      
    • Использование XPATH:

      new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//iframe[@id='snap-midtrans']")));
      new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath("//span[text()='Continue']"))).click();
      

Ссылка

Множество соответствующих обсуждений можно найти в:

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