簡體   English   中英

無法使用 selenium webdriver 和 java 單擊 iframe 中的按鈕

[英]Unable to click on a button present in iframe using selenium webdriver and java

我試圖點擊下面提到的 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();

任何建議將不勝感激。

由於所需元素位於<iframe>因此要找到該元素,您必須:

  • frameToBeAvailableAndSwitchToIt() WebDriverWait以獲得所需的frameToBeAvailableAndSwitchToIt()
  • 為所需的elementToBeClickable()引入WebDriverWait
  • 您可以使用以下任一定位器策略

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

參考

您可以在以下位置找到一些相關討論:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM