[英]Selenium Webdriver is very inconsistent during Execution of test scripts
我们有一个使用Selenium Webdriver开发的关键字驱动框架。 在运行脚本时,一些测试用例在第一次运行中会超时。 当我第二次运行时,相同的测试用例上次通过失败,但是这次其他一些测试用例失败了。
有人可以建议在框架/配置部分是否需要做任何事情。
我正在Windows 7上使用IE9,Java 6,Selenium 2.40,以及来自Selenium官方网站的IE驱动程序。
由于各种原因,您的测试可能很脆弱。
1.同步 -请勿使用Thread.sleep
。 您应该在测试中考虑等待机制。 WebDriver中有两种类型的等待。 隐式等待和显式等待。
一种。 隐式等待-例如下面的WebDriver
在抛出NoSuchElementFoundException
之前将内部最多轮询30秒
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
湾 显式等待 -在这里告诉WebDriver等待特定条件满足。 例如,在下面,我正在等待链接“ Account
可供点击。 一旦可用的WebDriver将返回WebElement
以便可以单击它。 看看一些已经实现的有用的ExpectedConditions
WebDriverWait wait = new WebDriverWait(driver,30/*Timeout in seconds*/);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Account")));
element.click();
2.数据依赖性 -确保您的测试彼此独立,并且不共享数据。 如果测试共享数据,可能会导致冲突
3.在Xpaths上使用CSS- 在这里找到我的答案
4.抽象层 -确保已从页面逻辑中抽象出测试逻辑。 使用PageObjects和PageFactory技术来更好地维护套件
最后,请阅读Simon Stewarts的博客, 网址为“自动Web测试:陷阱”,以获取详细信息。
我建议确保您使用的关键字不是动态生成的。
我曾经在一个站点上工作过,所有ID都看起来像这样:“ ext-gen123”,然后在下一次运行时,相同的元素将具有ID:“ ext-gen124”,但是在那之后运行ID回到'ext-gen123'...
在这种情况下,您必须使用其他标识符来定位元素-可能是CssClass或XPath。
Sainath,
有效运行TestCases的秘诀在于您编写TestCases的方式。.使用Fluent wait ,在元素可见和启用之前等待 ,在Testcase中使用html ID使TC高效。 IE和Selenium并不是一直都很好。.我的意思是,IE和Selenium有很多问题。
实现效率的唯一途径是正确处理异常和使用Wait语句
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.