繁体   English   中英

页面加载和Selenium-驱动程序在加载后不执行任何操作

[英]Page loading and Selenium - Driver not doing anything after it loads

我正在尝试自动化(Java + Selenium)网站测试,但是我在等待过程中遇到很多问题,无法按照自己的意愿进行操作。

一旦我准备好几个单元测试,我的问题就是:
*如果我不进行任何等待,仅执行代码启动firefox启动,则页面加载不会执行任何其他操作。 我的印象是页面将在返回控件之前加载,但这似乎没有发生。 如果我没有运行它,而是放置了一个断点,请对其进行调试并逐步运行,那么一切都将正常运行,这使我相信这是一个定时问题。

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

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(),然后在登录按钮上单击click()并停止。 我是否需要添加其他任何内容以实际执行wait命令还是应该足够?

我知道我可能会以一种相当愚蠢的方式将其弄乱,但我一生都无法自行找到或解决。

谢谢。

我不确定您如何单击提交按钮。 但它应该走下面的路

// 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();

显式和隐式等待

我希望这可以帮助你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM