这个问题在这里已有答案:
我正在学习Selenium Webdriver。我试图通过谷歌登录“Quora”。但在电子邮件输入部分,代码无法正常工作。我无法弄清问题是什么。请帮忙。以下是我的代码:
import org.openqa.*;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class Demo2 {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\\chromedriver.exe");
WebDriver driver=new ChromeDriver();
String url="https://quora.com";
driver.get(url);
WebElement ele1=driver.findElement(By.className("google_button_text"));
ele1.click();
WebElement email1=driver.findElement(By.name("identifier"));
email1.sendKeys("fggffgfd");
WebElement next1=driver.findElement(By.className("RveJvd snByac"));
next1.click();
WebElement password=driver.findElement(By.className("whsOnd zHQkBf"));
password.click();
password.sendKeys("Sffgdffdf3");
WebElement next2=driver.findElement(By.className("RveJvd snByac"));
next2.click();
}
}
使用Id而不是Name选择元素。您可以使用
By.id("identifierId")
代替
By.name("identifier")
尝试使用WindowHandle
,如下面的代码快照:
ele1.click();
String mainWindowHandler = driver.getWindowHandle();
for(String winHandle : driver.getWindowHandles()){
driver.switchTo().window(winHandle);
}
WebElement email1=driver.findElement(By.id("identifierId"));
它将在电子邮件字段中写入文本。然后你需要捕获像By.cssSelector("#identifierNext > content > span")
这样的Next按钮的精确选择器。通过这种方式,尝试找出密码字段和下一步按钮的cssSelector
。
在代码结束时,您需要添加以下代码行来关闭第二个窗口并切换到主窗口:
driver.close();
driver.switchTo().window(mainWindowHandler);
希望它可以解决您的问题。