0

を見つけてを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'");
}

ありがとう

4

2 に答える 2

1

私は日常の仕事で Selenium を使用していますが、この種のコードは問題なく動作するはずです。問題は、使用しようとしているときに要素が存在しないことにあると思います。

私の提案は、次のようなことを試すことです:

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

私は実際に、jQuery を使用して要素を検索し、[0] 要素を返す Selenium コードに「jquery」ヘルパー メソッドを持っているので、Selenium API で使用できます。

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

さらに、要素が画面に表示されるまで待つ必要がある場合もあります。これを行う簡単な方法は、Selenium の FindElement(By...) を使用することです。これは、Selenium が構成可能な時間、要素が表示されるまで待機するためです。

これを行う場合、このケースでは JavaScript を完全に避ける方が理にかなっているかもしれませんが、あなたがやろうとしていることは完全なシナリオで機能するはずです。

于 2014-02-25T15:07:17.807 に答える
-1

Selenium Webdriver を使用して DOM にアクセスすることはできません。JavaScript を使用する代わりに、以下のコード スニペットを使用して同じことを実現できます。

string text = "sa";
IWebElement element =  driver.FindElement(By.Id("UserName"));
element.SendKeys(text);
于 2012-05-22T10:12:48.620 に答える