我的代碼有什么問題,為什么自動點擊在接受 cookie 按鈕中不起作用。本網站使用 angular 應用程式。
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import com.paulhammant.ngwebdriver.ByAngular;
import com.paulhammant.ngwebdriver.NgWebDriver;
public class NewClass {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver",
"C:\\Users\\Hp\\Downloads\\chromedriver_win32\\chromedriver.exe");
ChromeDriver driver = new ChromeDriver();
NgWebDriver ngWebDriver = new NgWebDriver(driver);
ngWebDriver.waitForAngularRequestsToFinish();
driver.get("https://visa.vfsglobal.com/ind/en/deu/login/");
ngWebDriver = new NgWebDriver((JavascriptExecutor) driver);
ngWebDriver.waitForAngularRequestsToFinish();
driver.findElement(ByAngular.options("onetrust-accept-btn-handler")).click();
}
}
附上圖片在這里 
uj5u.com熱心網友回復:
據我所知,沒有辦法使用ChromeOptions您需要找到元素并單擊來自動接受 cookie 。
driver = new ChromeDriver();
driver.get("https://visa.vfsglobal.com/ind/en/deu/login/");
new WebDriverWait(driver, 30).until(ExpectedConditions.elementToBeClickable(By.id("onetrust-accept-btn-handler"))).click();
uj5u.com熱心網友回復:
當你使用這條線時
driver.findElement(ByAngular.options("onetrust-accept-btn-handler")).click();
它會嘗試立即找到元素,通常會導致錯誤。導致 web 元素/元素未正確呈現。
這是我們應該選擇由 WebDriverWait 實作的Explicit waits 的主要原因。
它們允許您的代碼停止程式執行或凍結執行緒,直到您傳遞的條件解決為止。以特定頻率呼叫條件,直到等待超時結束。這意味著只要條件回傳一個假值,它就會繼續嘗試和等待。
代碼 :
Webdriver driver = new ChromeDriver();
driver.manage().window().maximize();
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.elementToBeClickable(By.id("onetrust-accept-btn-handler"))).click();
uj5u.com熱心網友回復:
請在輸入用戶名和密碼之前添加等待功能,
如果輸入時彈出中斷,則用戶名和密碼將不正確。
就我而言,我創建了一個常用方法等待并單擊,
dh.wait_for_the_element_then_do(By.xpath("//button[text()='Accept All Cookies']"), "click", "", "cookies popo up");
dh.wait_for_the_element_then_do(By.xpath("//input[@tcp-auto='input-username']"),"send", username, "login username");
dh.wait_for_the_element_then_do(By.xpath("//input[@tcp-auto='input-password']"),"send", password, "login password");
dh.wait_for_the_element_then_do(By.xpath("//span[text()='Sign in']"),"click", "", "signin button");
uj5u.com熱心網友回復:
這是我的問題的解決方案。
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import com.paulhammant.ngwebdriver.ByAngular;
import com.paulhammant.ngwebdriver.NgWebDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.By;
public class NewClass {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver",
"C:\\Users\\Hp\\Downloads\\chromedriver_win32\\chromedriver.exe");
ChromeDriver driver = new ChromeDriver();
NgWebDriver ngWebDriver = new NgWebDriver(driver);
ngWebDriver.waitForAngularRequestsToFinish();
driver.get("https://visa.vfsglobal.com/ind/en/deu/login");
driver.manage().window().maximize();
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions
.elementToBeClickable(By.id("onetrust-accept-btn-handler")))
.click();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/320962.html
上一篇:AngularHttpInterceptor-fromPromise錯誤-TypeError:(0,x.fromPromise)isnotafunction
下一篇:角度防止用戶多次提交
