java - 无法识别 Selenium Webdriver 中的元素(skynews 上的 cookie 弹出窗口)
问题描述
我已经尝试了所有方法,包括 xpath,但我仍然无法单击https://www.news.sky.com上 cookie 弹出窗口上的接受按钮
尝试了 css 选择器、xpath、框架等一切。
这是我的代码:
公共类浏览器{
WebDriver driver;
public void browser_open() {
String projectPath = System.getProperty("user.dir");
System.setProperty("webdriver.chrome.driver", projectPath+"\\Drivers\\chromedriver\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
}
public void navigate() throws InterruptedException {
driver.get("http://news.sky.com");
//Thread.sleep(5000);
driver.switchTo().frame("sp_message_iframe_368417");
driver.findElement(By.xpath("/html/body/div/div[3]/div[3]/button[1]")).click();
}
}
请问有人可以帮我吗?
我已经在这个论坛和其他论坛上浏览了很多帖子,但找不到解决方案。
谢谢
解决方案
我会建议 xpath//button[@title='Accept']
的价值。
切换到可能不起作用,因为该元素尚不存在于框架中。
driver.switchTo().frame("sp_message_iframe_368417");
WebDriverWait wait = new WebDriverWait(driver, 10000);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//button[@title='Accept']")));
driver.findElement(By.xpath("//button[@title='Accept']")).click();
推荐阅读
- android - 如何在 Common Utils 中使用带有按钮的静态对话框
- python - Pandas:转换数据框以显示原始数据框中是否存在值组合
- cors - 向 HTTP 请求添加更多标头时出错
- mysql - 无法为 mariadb 客户端使用 SSL 和 TLS 连接
- mxgraph - 如何将多个步骤合并为一个撤消/重做?
- javascript - Laravel 没有获取所有请求数据
- arduino - Arduino兼容芯片,无需晶体进行串行通信
- html - Django 和 HTML:导航栏周围多余空间的问题
- php - 解析错误:语法错误,第 13 行 E:\xampp\htdocs\study\connect.php 中的意外“值”(T_STRING)
- python - 将 Torchvision ImageFolder 与测试集一起使用