无法使用Selenium Webdriver和Java单击iframe中存在的按钮

问题描述 投票:0回答:1

我正在尝试点击下面提到的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();

任何建议将不胜感激。

java selenium xpath css-selectors webdriverwait
1个回答
0
投票

由于所需元素在<iframe>内,因此必须找到该元素:

  • WebDriverWait表示为所需的frameToBeAvailableAndSwitchToIt()
  • WebDriverWait表示为所需的elementToBeClickable()
  • 您可以使用以下Locator Strategies中的任何一个:

    • 使用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();
      

参考

您可以在以下位置找到相关讨论的全文:

© www.soinside.com 2019 - 2024. All rights reserved.