簡體   English   中英

selenium 在 c# UnexpectedJavaScriptError 中測試

[英]selenium testing in c# UnexpectedJavaScriptError

我想找到一個textbox id= UserName並給它一個value =sa

我的測試有問題。

錯誤顯示UnexpectedJavaScriptError

這是怎么回事? 我該如何解決這個問題?

這是我的代碼。

public void SetupTest()
{

    driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 0, 30));
    driver.Navigate().GoToUrl(**the WEBSITE url**);

}

public void Test1()
{

    IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
    js.ExecuteScript("document.getElementById('UserName').value='sa'");
}

謝謝

我在日常工作中使用 Selenium,這種代碼應該可以正常工作。 我認為問題可能是當您嘗試使用它時該元素不存在。

我的建議是嘗試這樣的事情:

try {
  var element = document.getElementById('UserName');
  if(element) {
     element.value = 'sa';
  }
} catch(e) {}

我實際上在我們的 selenium 代碼中有一個“jquery”輔助方法,它使用 jQuery 查找元素,然后返回 [0] 元素,以便我們可以將它與 Selenium API 一起使用。

    private IWebElement GetFirstElement()
    {
        return (IWebElement)((IJavaScriptExecutor)_driver).ExecuteScript("return $(\"" + _selector + "\")[0];", null);
    }

此外,您可能只需要等到元素出現在屏幕上。 一種簡單的方法是使用 Selenium 的 FindElement(By...),因為 Selenium 將等待元素出現的可配置時間量。

如果你這樣做,對於這種情況完全避免 JavaScript 可能更有意義,但你正在嘗試做的事情應該在一個完美的場景中工作。

您無法使用 selenium 網絡驅動程序訪問 DOM。 除了使用 javascript 之外,您還可以使用以下代碼片段實現相同的目的

string text = "sa";
IWebElement element =  driver.FindElement(By.Id("UserName"));
element.SendKeys(text);

暫無
暫無

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

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