我正在尝试自动化(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() 并停止。我是否需要添加任何其他内容才能实际执行等待命令,或者这是否足够?
我知道我可能以一种相当愚蠢的方式把它搞砸了,但我终生无法找到它或靠我自己解决它。
谢谢。