提问人:Carlo Cumino 提问时间:10/16/2023 最后编辑:Carlo Cumino 更新时间:10/16/2023 访问量:41
在 java 中使用 Selenium 处理 iframe - .click() 不起作用
Handle an iframe witha Selenium in java - .click() doesn't work
问:
我开始学习硒,从手动测试切换到自动测试。 我正在遵循网站上的教程。但是当我第一次启动脚本并打开测试页面时,我发现了这个 cookie 接受(对不起,如果它是意大利语)
在发现建议在iframe中后,我重写了脚本来处理它。我的想法是“现在我单击”全部接受“(Accetta tutti),然后我可以继续学习教程。不幸的是,click() 命令不起作用。
这是我的剧本:
package newpackage;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
public class popUpAutomation {
@SuppressWarnings("deprecation")
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:/Users/ccumi/Downloads/chromeDriver/chromedriver.exe");
WebDriver chrome = new ChromeDriver();
chrome.get("https://demo.guru99.com/popup.php");
chrome.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
int size= chrome.findElements(By.tagName("iframe")).size();
System.out.println("iframe "+ size);
chrome.switchTo().frame(3);
System.out.println(chrome.findElement(By.xpath("//button[@id='save']/span/div")).getText());
chrome.findElement(By.id("save")).click();
}
}
我不明白错误在哪里,因为在控制台上我看到在这一行中找到了该元素:
System.out.println(chrome.findElement(By.xpath("//button[@id='save']/span/div")).getText());
答:
1赞
Shawn
10/16/2023
#1
请参阅下面的工作代码,并附有内联说明:
chrome.get("https://demo.guru99.com/popup.php");
chrome.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);;
int size= chrome.findElements(By.tagName("iframe")).size();
System.out.println("iframe "+ size);
// switch into the IFRAME with ID=gdpr-consent-notice
chrome.switchTo().frame(chrome.findElement(By.id("gdpr-consent-notice")));
System.out.println(chrome.findElement(By.xpath("//button[@id='save']/span/div")).getText());
// Below 2 lines will click on the Accept All button using JavaScript
WebElement element = chrome.findElement(By.xpath("//button[@id='save']/span/div"));
((JavascriptExecutor) chrome).executeScript("arguments[0].click();", element);
// Below line will come out of the IFRAME and switch to main HTML context
chrome.switchTo().defaultContent();
控制台结果:
iframe 3
Accept All
评论
0赞
Carlo Cumino
10/16/2023
我今晚下班后再试试。;-)谢谢
0赞
Carlo Cumino
10/17/2023
测试一下:这是工作。谢谢!
评论
chrome.manage().timeouts()...
chrome.get("https://demo.guru99.com/popup.php");