[英]Handle/Accept cookie pop-up in Selenium
I am trying to 'accept the cookies' on the homepage, but my code doesn't work.我试图在主页上“接受 cookie”,但我的代码不起作用。 I tried to get the new window handles and then identify the subsequent Xpath for the frame and Accept button but it never work.我尝试获取新的 window 句柄,然后为框架和“接受”按钮识别后续的 Xpath,但它从未起作用。
package seleniumTestPack;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.*;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.Cookie;
@SuppressWarnings("unused")
public class firstSelTest {
public static void main(String[] args) throws InterruptedException {
ChromeOptions options = new ChromeOptions();
//Add chrome switch to disable notification - "**--disable-notifications**"
options.addArguments("--disable-notifications");
System.setProperty("webdriver.chrome.driver", "C:\\Users\\vmyna\\Downloads\\chromedriver_win32\\chromedriver.exe");
WebDriver driver = new ChromeDriver(options);
driver.get("https://www.zyyah.com/homeowner-lifestyle-perfected-home-value-protected/");
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.switchTo().frame(0);
driver.getWindowHandles();
driver.switchTo().alert().accept();
By cookies_accept = By.xpath("//*[@id=\"cookie-law-info-bar\"]");
By cookies_gotIt = By.xpath("//*[@id=\"cookie_action_close_header\"]");
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(cookies_accept)).click();
wait.until(ExpectedConditions.invisibilityOfElementLocated(cookies_accept));
wait.until(ExpectedConditions.elementToBeClickable(cookies_gotIt)).click();
driver.findElement(By.xpath("//*[@id=\'et-boc\']/div/div/div[4]/div/div/div[2]/div[1]")).click();
Thread.sleep(10000);
driver.quit();
}
}
You no need to switch frame in your case, because there is no frame present in your page.您无需切换框架,因为您的页面中没有框架。 Just inspect the "Accept Cookies" and click on that.只需检查“接受 Cookie”并单击它。
driver.get("https://www.zyyah.com/homeowner-lifestyle-perfected-home-value-protected/");
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.findElement(By.id("cookie_action_close_header")).click();
Use of Switch to Frame:使用切换到框架:
https://www.browserstack.com/guide/handling-frames-in-selenium https://www.browserstack.com/guide/handling-frames-in-selenium
Use of Alert:警报的使用:
https://www.browserstack.com/guide/alerts-and-popups-in-selenium https://www.browserstack.com/guide/alerts-and-popups-in-selenium
The code below worked for me.下面的代码对我有用。 "Accept Cookies" button is not under any pop-window. “接受 Cookies”按钮不在任何弹出窗口下。 So no frame or pop-up window is present here.所以这里没有框架或弹出窗口 window 。 Here, we just need to locate "Accept Cookies" button and click on it.在这里,我们只需要找到“接受 Cookies”按钮并点击它。
WebDriver Driver = new ChromeDriver();
Driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
String url = "https://www.zyyah.com/homeowner-lifestyle-perfected-home-value-protected/";
Driver.get(url);
Driver.findElement(By.id("cookie_action_close_header")).click();
System.out.println("completed");
WebElement cookieAccept = driver.findElement(By.id("gdpr-banner-accept"));
// Explicit Wait
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(60));
wait.until(ExpectedConditions.visibilityOf(cookieAccept));
wait.until(ExpectedConditions.elementToBeClickable(cookieAccept));
cookieAccept.click();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.