簡體   English   中英

使用Selenium在C#中聲明Javascript值

[英]Assert Javascript value in C# with Selenium

我正在為Webapp編寫測試。 在應用程序中的某一時刻,該網頁使用Javascript完成。 為了進行測試,我將Visual Studio 2012與NUnitSelenium 我要檢查是否與包裝盒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”。

我在這里想念什么?

我知道您有一些可行的方法,但我想提醒您避免使用JavaScript來獲取元素的值,實際上,通常,在進行測試時應避免使用它,除非沒有其他方法可以執行此操作想做。 原因是Selenium應該表現得像普通用戶一樣。 典型的用戶不會在頁面中鍵入JavaScript或直接與之交互。 這對於使用jQuery來說是多余的,因為您的測試不應假定jQuery在頁面上存在並且正在運行。 Selenium本身提供了獲取字段值的功能,因此我建議您將代碼重寫為以下形式:

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

經過反復試驗,我發現了一些可行的方法:

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

為什么會起作用,我不知道。 基本上是相同的命令。 jQuery正在使用其他命令,而不僅僅是我首先嘗試的命令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM