当我将它们作为一组运行时,硒出现奇怪的问题。
让我更详细地描述我的问题。当我从ide进行一项测试时,一切正常。但是,当我尝试将它们作为一个小组进行运行时,总是会先通过测试,但之后测试就会失败。在每个测试中,我都找到并单击相同的按钮。 xPath没问题,因为在chrome控制台元素中找到了。
每次测试后,我都有将网站返回到家的方法。
Ach和我要测试的元素位于iFrame
中。
所以让我复制粘贴一些示例代码。
Api类:
public class SiteImpl implemets BasicSite {
.
.
.
static {
swtichToTestedFrame();
}
private SiteImpl() {};
public static SiteImpl get() {
return new SiteImpl ();
}
@Override
public void clickCreateButton() {
Utils.findElementByXpathAndParam(XPath.DIV_TITLE_XPATH, BUTTON_TITLE).orElseThrow(
() -> new NoSuchElementException("Create button does not exist")).click();
}
private static void swtichToTestedFrame() {
WebElement iFrameElement = Utils.findElementByXpath(XPath.IFRAME_XPATH).orElseThrow(() -> new NoSuchElementException("iFrame does not exist"));
XdmWebDriver.getWebDriver().switchTo().frame(iFrameElement);
}
}
可以说所有测试看起来都像这样,正如我之前提到的,只有第一个测试通过。如果所有这些都相同,则为事件。
@Test
public void test() {
ExportManagerImpl.get().clickCreateTask();
}
显然,之前和之后都有方法。代码明显简化了。
org.openqa.selenium.NoSuchElementException: Create button does not exist
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.53.1', revision: 'a36b8b1', time: '2016-06-30 17:37:03'
System info: host: 'xxxx', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_162'
Driver info: driver.version: unknown
答案 0 :(得分:2)
我建议您在构造函数而不是静态块上调用swtichToTestedFrame()
。
请提供使用@Before和@Test对测试和完整文件进行分组的方式。有助于我更好地理解它。