0

我正在为 webapp 编写测试。在应用程序的某一时刻,网页是使用 Javascript 完成的。对于测试,我使用 Visual Studio 2012NUnitSelenium. 我想检查带有id=j_idt13:JNumber文本值的框是否为sometext.

IJavaScriptExecutor js = driver as IJavaScriptExecutor;
string valoare = (string)js.ExecuteScript("return $('#j_idt13\\:JNumber').val();");
Assert.IsTrue(valoare.Equals("sometext"));

我不断收到此错误:

“语法错误,无法识别的表达式:不支持的伪:JNumber”。

我在这里想念什么?

4

2 回答 2

1

我知道你有一些有用的东西,但我想提醒你避免使用 JavaScript 来获取元素的值,事实上,通常在进行测试时应该避免使用它,除非没有其他方法可以做你的事情想要做。原因是 Selenium 应该像典型用户那样行事。典型用户不会在页面中键入 JavaScript 或直接与其交互。这对于使用 jQuery 来说是额外的,因为您的测试不应假定 jQuery 存在于页面上并且正在运行。Selenium 本身提供了获取字段值的能力,因此我建议您将代码重写为:

driver.FindElement(By.Id("j_idt13:JNumber")).GetAttribute("value");

于 2013-05-14T15:18:51.563 回答
0

经过反复试验,我发现了一些可行的方法:

string valoare = (string)js.ExecuteScript("return document.getElementById('j_idt13\\:JNumber').value;");

为什么它有效,我不知道。基本上是相同的命令。并且 jQuery 正在使用其他命令,而不是我第一次尝试的命令。

于 2013-05-14T13:59:54.517 回答