页面加载和Selenium - 驱动程序加载后没有做任何事情

时间:2013-01-28 20:37:31

标签: java selenium selenium-webdriver wait

我试图自动化(Java + Selenium)对网站的测试,但我在等待中遇到很多问题并让它做我想做的事情。

一旦我准备了几个单元测试,我的问题是这样的:
*如果我没有等待,只是执行代码firefox启动,页面加载和dons做任何其他事情。我的印象是页面会在返回控件之前加载,但这似乎不会发生在这里。如果不是运行它,我会设置一个断点,调试它并逐步运行它一切都很完美,以便让我相信这是一个时间问题。

如果我写这个,那么效果也很好:

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);  

但是如果我希望它等待一个元素可见(比如用户名或密码字段)或者一个按钮是可点击的(比如登录按钮),那么光标就会停留在URL栏中,除了加载页面。

        WebDriverWait wait = new WebDriverWait(driver, 20);
        wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("//*[@id='isc_E']"))));

(是的,我知道我可以使用ID而不是xpath,它是我多次尝试之一的遗留物)。

在那段代码之后,它应该在两个文本字段上执行一些sendKeys(),然后在登录按钮上单击()并停止。我是否需要添加任何其他内容来实际执行wait命令,还是应该足够了?

我知道我可能会以一种相当愚蠢的方式搞砸到某个地方,但我不能为我的生活找到它或者自己解决它。

感谢。

1 个答案:

答案 0 :(得分:0)

我不确定您是如何点击提交按钮的。但它应该在下面

// WebDriver instance for explicit wait by default on until condition
WebDriverWait wait = new WebDriverWait(driver, 5000);
// waits until elements gets ready 
WebElement we = wait
              .until(ExpectedConditions.elementToBeClickable(By
                            .xpath("//*[@id=\"searchSubmit\"]")));

//  once elements is ready it will clicked
driver.findElement((By) we).click();

driver.findElement(By.xpath("//*[@id=\"searchSubmit\"]")).click();

Explicit and Implicit Waits

我希望这会对你有所帮助。