我正在寻找类似于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秒之后会超时.
您如何覆盖代码中存在/可见元素的等待?任何提示都很明显.
我有以下代码用于从给定列表中选择一个选项,它通常可以工作,但有时它会因第二个 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) 我试图将我的某些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);
在对我的请求的响应中,我得到了一个JSON项目列表
{
"Id": 111,
"Name": "aaa"
},
{
"Id": 222,
"Name": "bbb"
}
Run Code Online (Sandbox Code Playgroud)
我需要声明,在我的回复中,至少有5个项目.使用JSONPath Count时,我只能使用$ ..*来检查确切的值.不幸的是,我不知道返回的确切项目数,只要响应中有超过5项,一切都可以.我可以使用任何JSONPath断言吗?
我在jMeter中模拟以下情况:
100个用户登录一次,每30秒进行一次搜索,思考时间为5秒。
我该如何实施?
现在我有这样的事情:
ThreadGroup(100usrs)
+-- OnceOnlyController(LogIn)
+-- LoopControler(Search)
+-- Timer(5s)
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何在搜索实例之间延迟30秒。
甚至有可能还是我必须使用一些解决方法?
任何帮助表示赞赏。