[英]How to handle 'Log in with Google' popup window using Selenium WebDriver
所以我有一段代碼可以在fblogin彈出窗口上工作,但是同一段代碼不能在googlelogin彈出窗口上工作。 我不知道為什么。 網站= https://accounts.trivago.com/login#
Fb注冊代碼:
driver.findElement(By.xpath(".//*[@id='authentication-login']/div/section[1]/div[3]/div/button[1]")).click();
String parentWindow = driver.getWindowHandle();
System.out.println("Parent Window ID is : " + parentWindow);
Set<String> allWindow = driver.getWindowHandles();
int count = allWindow.size();
System.out.println("Total Window : " + count);
for(String child:allWindow)
{
if(!parentWindow.equalsIgnoreCase(child))
{
driver.switchTo().window(child);
driver.manage().window().maximize();
driver.findElement(By.id("email")).sendKeys("");
driver.findElement(By.id("pass")).sendKeys("");
driver.findElement(By.id("u_0_0")).click();
Thread.sleep(7000);
}
}
driver.switchTo().window(parentWindow);
Google登錄:
driver.findElement(By.xpath(".//*[@id='authentication-login']/div/section[1]/div[3]/div/button[2]")).click();
String parentWindow = driver.getWindowHandle();
System.out.println("Parent Window ID is : " + parentWindow);
Set<String> allWindow = driver.getWindowHandles();
int count = allWindow.size();
System.out.println("Total Window : " + count);
for(String child:allWindow)
{
if(!parentWindow.equalsIgnoreCase(child))
{
driver.switchTo().window(child);
driver.manage().window().maximize();
Thread.sleep(7000);
}
}
driver.switchTo().window(parentWindow);
您的代碼正確無誤,只需在點擊“使用Google登錄”按鈕后添加等待即可。
您也可以使用以下代碼
public void LoginGoogle() throws InterruptedException
{
driver.get("https://accounts.trivago.com/login#");
driver.findElement(By.xpath(".//*[@id='authentication-login']/div/section[1]/div[3]/div/button[2]")).click();
Thread.sleep(5000);
String parentWindow = driver.getWindowHandle();
System.out.println("Parent Window ID is : " + parentWindow);
for(String winHandle : driver.getWindowHandles())
{
driver.switchTo().window(winHandle);
System.out.println(driver.getTitle());
driver.manage().window().maximize();
}
WAIT.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[@id='identifierId']")));
driver.findElement(By.xpath("//input[@id='identifierId']")).sendKeys(emailid);
//Continue
當您訪問網站https://accounts.trivago.com/login#
您必須借助“ 定位器策略” ,該策略可以唯一地標識按鈕“ 登錄到Google”,然后在其上調用click()
方法並最終在切換之前引入WebDriverWait到Gmail登錄框 。 您可以使用以下代碼塊:
代碼塊:
System.setProperty("webdriver.gecko.driver", "C:\\path\\to\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.get("https://accounts.trivago.com/login#");
String parentWindow = driver.getWindowHandle();
System.out.println("Parent Window ID is : " + parentWindow);
driver.findElement(By.xpath("//button[@class='btn social-login__btn social-login__btn--google btn--reset block js_tlgGoogleSignin']//span[@class='btn__text']")).click();
WebDriverWait wait = new WebDriverWait(driver,5);
wait.until(ExpectedConditions.numberOfWindowsToBe(2));
Set<String> s1 = driver.getWindowHandles();
Iterator<String> i1 = s1.iterator();
while(i1.hasNext())
{
String next_tab = i1.next();
if (!parentWindow.equalsIgnoreCase(next_tab))
{
driver.switchTo().window(next_tab);
System.out.println("Working on Google Login Box");
WebDriverWait wait2 = new WebDriverWait(driver, 20);
wait2.until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='identifierId']"))).sendKeys("Divya Master");
}
}
控制台輸出:
Parent Window ID is : 4294967297
Working on Google Login Box
快照:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.