小编Chr*_*ski的帖子

Selenium:等待一个元素确实消失了

我提出了一项艰巨的任务.我对硒很新,并且仍然在研究等待元素和类似物的功能.

我必须操纵网站上的一些数据,然后继续操作另一个.问题:操作调用一个脚本,当在后台处理操纵数据时,会出现一个"Saving ..."标签.我必须等到可以进入下一个网站.

所以这就是:我如何等待和元素消失?事情是:它始终存在于DOM中,但只能通过某些脚本显示(我想,见下图). palish代码包含所述元素

这就是我尝试但它只是不起作用 - 没有等待,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)

java selenium invisible wait

5
推荐指数
1
解决办法
2万
查看次数

TestNG:如何以编程方式运行自定义TestNG.XML文件

我浏览了几个不同的线程和网站(以及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

3
推荐指数
2
解决办法
1万
查看次数