Wait for page load in Selenium
我是编码和自动化测试的新手。我在编码中知道的只有if-else
,while
,do while
和for
等等。以上是我试图结账以使Selenium等待一段时间的链接,但无法实现。
以下是我为了登录我的Gmail帐户而编写的以下代码但是没有工作。任何人都可以更正代码吗?
我想我需要延迟selenium的操作并让页面首先加载。
public class loginGmail {
public static void main(String[] args)
{
System.setProperty("webdriver.gecko.driver", "E:\\eclipse\\Drivers\\geckodriver.exe");
FirefoxDriver d = new FirefoxDriver();
d.get("https://www.gmail.com");
d.findElement(By.id("Email"));
WebElement email = d.findElement(By.id("Email"));
email.sendKeys("tusharanandnet@gmail.com");
d.findElement(By.name("signIn"));
WebElement next = d.findElement(By.name("signIn"));
next.click();
d.findElement(By.id("Passwd"));
WebElement pass = d.findElement(By.id("Passwd"));
pass.sendKeys("********");
d.findElement(By.id("signIn"));
WebElement signIn = d.findElement(By.id("signIn"));
signIn.click();
}
}
答案 0 :(得分:0)
这是known bug in geckodriver。要暂时解决此问题,请使用explicit waits
答案 1 :(得分:0)
我没有Gmail帐户,所以我无法对此进行测试,但这应该可行。我不会想到你需要等待初始页面加载,但也许你会这样做。我在开始时添加了一个等待并删除了许多不必要的代码。你发现每个元素两次。此外,如果您不需要多个元素(click,sendKeys等),那么就不需要将它存储在变量中。只需在一个衬里使用它。另外,请致电您的司机driver
......没有人知道d
是什么。您希望为变量命名,以便清楚它们包含的内容。保存一些不太清楚的按键不会节省时间,并且使用现代IDE,您可以使用类似intellisense的功能通过按键自动完成驱动程序名称。
new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.id("Email")))
.sendKeys("tusharanandnet@gmail.com");
// driver.findElement(By.name("signIn")).click(); // don't think this is needed?
driver.findElement(By.id("Passwd")).sendKeys("********");
driver.findElement(By.id("signIn")).click();