我提出了一项艰巨的任务.我对硒很新,并且仍然在研究等待元素和类似物的功能.
我必须操纵网站上的一些数据,然后继续操作另一个.问题:操作调用一个脚本,当在后台处理操纵数据时,会出现一个"Saving ..."标签.我必须等到可以进入下一个网站.
所以这就是:我如何等待和元素消失?事情是:它始终存在于DOM中,但只能通过某些脚本显示(我想,见下图).
这就是我尝试但它只是不起作用 - 没有等待,selenium只是进入下一步(并且因为"保存"而被警告问我是否要离开或停留在页面上. ..").
private By savingLableLocator = By.id("lblOrderHeaderSaving");
public boolean waitForSavingDone(By webelementLocator, Integer seconds){
WebDriverWait wait = new WebDriverWait(driver, seconds);
Boolean element = wait.until(ExpectedConditions.invisibilityOfElementLocated(webelementLocator));
return element;
}
Run Code Online (Sandbox Code Playgroud)
更新/解决方案:
我提出了以下解决方案:我构建了自己的方法.基本上它会在循环中检查CssValue是否会发生变化.
循环检查CSSVALUE"display"的一定时间,从"block"变为另一个状态.
public void waitForSavingOrderHeaderDone(Integer _seconds){
WebElement savingLbl = driver.findElement(By.id("lblOrderHeaderSaving"));
for (int second = 0;; second++) {
if (second >= _seconds)
System.out.println("Waiting for changes to be saved...");
try {
if (!("block".equals(savingLbl.getCssValue("display"))))
break;
} catch (Exception e) {
}
}
Run Code Online (Sandbox Code Playgroud) 我浏览了几个不同的线程和网站(以及TestNG API),寻找如何运行和创建自定义测试.我没有找到(或不了解)如何以编程方式运行自定义testng.xml(测试套件).
我创建了一个如下所示的testng.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<suite name="The Login Suite'" verbose="1" >
<test name="Some login check" >
<classes>
<class name="tests.first_login"/>
</classes>
</test>
<test name="Another login check" >
<classes>
<class name="tests.second_login"/>
</classes>
</test>
</suite>
Run Code Online (Sandbox Code Playgroud)
我知道我可以从Eclipse中执行我的套件 - 但我不希望这样.为什么?因为我正在通过调度程序运行测试.所以我需要一个可配置的testng.xml文件.
我试图通过如下代码生成虚拟XML测试套件:
TestListenerAdapter tla = new TestListenerAdapter();
TestNG tng = new TestNG();
tng.addListener(tla);
XmlSuite loginSuite = new XmlSuite();
loginSuite.setName("The Login Suite");
XmlTest first_test = new XmlTest();
first_test.setName("Some login check");
first_test.setSuite(loginSuite);
List<XmlClass> fistlogin_classes = new ArrayList<XmlClass>();
fistlogin_classes.add(new XmlClass("tests.fist_login"));
XmlTest second_test = new XmlTest();
second_test.setName("Another login check"); …Run Code Online (Sandbox Code Playgroud) java eclipse testng custom-configuration programmatically-created