小编tom*_*tom的帖子

WebDriver - 使用Java等待元素

我正在寻找类似于waitForElementPresent检查元素是否在我点击之前显示的东西.我认为这可以通过implicitWait,所以我使用以下内容:

driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)

然后单击

driver.findElement(By.id(prop.getProperty(vName))).click();
Run Code Online (Sandbox Code Playgroud)

不幸的是,有时它等待元素,有时候不等.我找了一会儿找到了这个解决方案:

for (int second = 0;; second++) {
            Thread.sleep(sleepTime);
            if (second >= 10)
                fail("timeout : " + vName);
            try {
                if (driver.findElement(By.id(prop.getProperty(vName)))
                        .isDisplayed())
                    break;
            } catch (Exception e) {
                writeToExcel("data.xls", e.toString(),
                        parameters.currentTestRow, 46);
            }
        }
        driver.findElement(By.id(prop.getProperty(vName))).click();
Run Code Online (Sandbox Code Playgroud)

它等了很久,但在超时前它必须等待5次,50秒.有点多.所以我把隐式等待设置为1秒,直到现在一切都好了.因为现在有些事情在超时之前等待10秒,但是其他一些事情在1秒之后会超时.

您如何覆盖代码中存在/可见元素的等待?任何提示都很明显.

java webdriver selenium-webdriver

73
推荐指数
3
解决办法
19万
查看次数

WebDriver 和 C# - NoSuchElement 异常

我有以下代码用于从给定列表中选择一个选项,它通常可以工作,但有时它会因第二个 if 上的 NoSuchElement 异常而失败。我的印象是,如果它找不到元素,它只会再次返回循环。我相信解释很简单......有人可以启发我吗?

    public static void selectFromList(String vList, String vText, IWebDriver driver)
    {
        for (int sec = 0; ; sec++)
        {
            System.Threading.Thread.Sleep(2500);
            if (sec >= 10) Debug.Fail("timeout : " + vList);
            if (driver.FindElement(By.Id(ConfigurationManager.AppSettings[vList])).Displayed) break;
        }
        new SelectElement(driver.FindElement(By.Id(ConfigurationManager.AppSettings[vList]))).SelectByText(vText);
    }
Run Code Online (Sandbox Code Playgroud)

c# selenium webdriver

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

如何使用MSTest在C#中强制测试失败

我试图将我的某些WebDriver测试从JAVA移植到C#。我坚持的是驱动程序无法在页面上找到某些元素的情况,在JAVA中,我这样做:

if (second >= 10) fail("timeout - " + list);
Run Code Online (Sandbox Code Playgroud)

因此,如果某件事花费了10秒钟以上,则测试将失败并显示超时消息。我在C#中尝试了类似的方法

if (sec >= 10) Debug.Fail("timeout : " + vList);
Run Code Online (Sandbox Code Playgroud)

但这实际上并没有使测试失败,但是给了我一个选择,它带有异常消息框。那不是不,我需要我的自动测试完全失败。然后我尝试

if (sec >= 10) Assert.Fail("timeout : " + vList);
Run Code Online (Sandbox Code Playgroud)

但这会引发未处理的异常错误。我应该在try / catch块中包含Assert.Fail吗?还是应该使用完全不同的方法使测试失败?

如主题中所述,我正在使用MSTest。

编辑:确切的消息是:

用户代码未处理AssertFailedException。断言失败。超时:someField。

Assert.Fail(“ timeout:” + vList);

c# mstest webdriver

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

SoapUI JSONPath断言基于返回项的计数

在对我的请求的响应中,我得到了一个JSON项目列表

{
"Id": 111,
"Name": "aaa"
},
{
"Id": 222,
"Name": "bbb"
}
Run Code Online (Sandbox Code Playgroud)

我需要声明,在我的回复中,至少有5个项目.使用JSONPath Count时,我只能使用$ ..*来检查确切的值.不幸的是,我不知道返回的确切项目数,只要响应中有超过5项,一切都可以.我可以使用任何JSONPath断言吗?

soapui assertions jsonpath

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

jMeter计时器-循环延迟

我在jMeter中模拟以下情况:
100个用户登录一次,每30秒进行一次搜索,思考时间为5秒。
我该如何实施?

现在我有这样的事情:

ThreadGroup(100usrs)
+-- OnceOnlyController(LogIn)
+-- LoopControler(Search)
+-- Timer(5s)
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何在搜索实例之间延迟30秒。
甚至有可能还是我必须使用一些解决方法?
任何帮助表示赞赏。

jmeter

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