2012-03-08 2 views
0

Когда я запускаю этот код внутри MSTest TestMethod с использованием C# ...Селен возвратил ошибку JavaScript (UnexpectedJavaScriptError)

IWebDriver iWebDriver = new InternetExplorerDriver(); 

WebDriverBackedSelenium webDriverBackedSelenium = new WebDriverBackedSelenium(iWebDriver, "http://localhost:53157"); 

webDriverBackedSelenium.Start(); 

webDriverBackedSelenium.WaitForCondition("selenium.browserbot.getUserWindow().$.active == 0", "5000"); 

Я получаю ошибку JavaScript (UnexpectedJavaScriptError) еще я видел пример после того, как, например, что это путь идти.

Как дополнительный фрагмент информации, я тестировал, что jquery-1.7.1 загружен и полезен. Я даже тестировал на веб-странице без селена, просто используя встроенный скрипт, чтобы увидеть, будет ли работать $ .active, и это произойдет.

Может ли кто-нибудь сказать, что я здесь делаю неправильно? Любая догадка была бы рада.

+0

Не следует ли Javascript будет selenium.browserbot.getCurrentWindow(). $. Активный –

+0

Я попытался как selenium.browserbot.getCurrentWindow(). $. Активные и selenium.browserbot.getUserWindow(). $. С активным и возвращая ту же ошибку. – apolfj

ответ

1

Когда вы используете WebDriverBackedSelenium, у вас есть намного больше широты с типами сценариев, которые вы можете выполнить. Кроме того, вам не нужно использовать «selenium.browserbot», и действительно, объект browserbot даже не может быть загружен WebDriverBackedSelenium. Если попробовать следующее, он должен работать:

IWebDriver iWebDriver = new InternetExplorerDriver(); 
WebDriverBackedSelenium webDriverBackedSelenium = new WebDriverBackedSelenium(iWebDriver, "http://localhost:53157"); 
webDriverBackedSelenium.Start(); 
webDriverBackedSelenium.Open("relative/path/to/jQueryPage.html"); 
webDriverBackedSelenium.WaitForCondition("$.active == 0", "5000"); 
+0

Нужно ли .Open() просто указывать путь к используемой веб-странице? ИЛИ Нужно ли указывать на библиотеку jQuery, которую я использую для выполнения $ .active? – apolfj

+0

В приведенном выше примере кода предполагается, что используемая веб-страница уже загружает jQuery в свой HTML-источник. Вызов '.Open()' должен просто открыть страницу, которую вы используете. – JimEvans

0

Вы можете попробовать использовать IJavaScriptExecutor и использовать во время цикла и попытайтесь ждать, пока условие спичек.

Вы можете посмотреть документацию здесь

http://selenium.googlecode.com/svn-history/r15240/trunk/docs/api/dotnet/html/AllMembers_T_OpenQA_Selenium_IJavaScriptExecutor.htm

Также помните, что возврат стоимости по IJavaScriptExecutor является объектом. Возможно, вам придется отправить его в строку перед сопоставлением.

Смежные вопросы