我正在为webapp编写测试。在应用程序的某一点上,使用Javascript完成网页。
为了测试我正在使用带有NUnit
和Selenium
的Visual Studio 2012。
我想检查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"));
我一直收到这个错误:
“语法错误,无法识别的表达式:unsupported pseudo:JNumber”。
我在这里缺少什么?
答案 0 :(得分:1)
我知道你有一些有用的东西,但我想提醒你不要使用JavaScript来获取元素的值,事实上一般来说,在做测试时应该避免,除非没有别的办法做你想做的事。原因是Selenium应该像普通用户那样行事。典型用户不会在页面中键入JavaScript或直接与其进行交互。这对于使用jQuery来说是额外的,因为您的测试不应该假设jQuery存在于页面上并且正在运行。 Selenium本身提供了获取字段值的功能,因此我建议您将代码重写为:
driver.FindElement(By.Id("j_idt13:JNumber")).GetAttribute("value");
答案 1 :(得分:0)
经过一些反复试验后,我发现了一些有效的方法:
string valoare = (string)js.ExecuteScript("return document.getElementById('j_idt13\\:JNumber').value;");
为什么它有效,我不知道。基本上是同一个命令。 jQuery正在使用其他命令,而不是我先尝试过的命令。