3

我有一个 Selenium web-driver 脚本,它只访问一个 web-element(textbox) 并将其值设置为 some value 。

我正在使用 ChutzPath,因为它在后端使用 PhantomJS 浏览器。

但是每次执行脚本,都会显示如下错误。

T
Result Message: 
Test method Test_Project_with_Selenium.UnitTest1.BrowseTheWeb threw exception: 

OpenQA.Selenium.NoSuchElementException: Error Message => 'Unable to find element with id 'inputEl''
 ***caused by Request => {"headers":{"Accept":"application/json, image/png","Connection":"Close","Content-Length":"47","Content-Type":"application/json;charset=utf-8","Host":"localhost:42982"},"httpVersion":"1.1","method":"POST","post":"{\"using\":\"id\",\"value\":\"textfield-1042-inputEl\"}","url":"/element","urlParsed":{"anchor":"","query":"","file":"element","directory":"/","path":"/element","relative":"/element","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/element","queryKey":{},"chunks":["element"]},"urlOriginal":"/session/01225660-1a45-11e3-8ea4-eff85782779d/element"}
Result StackTrace:  
at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(String mechanism, String value)
   at OpenQA.Selenium.Remote.RemoteWebDriver.FindElementById(String id)
   at Test_Project_with_Selenium.UnitTest1.BrowseTheWebClient() in c:\Users\XYZ\Documents\Visual Studio 2012\Projects\ProjectName\Test_Project_with_Selenium\UnitTest1.cs:line 19***
4

2 回答 2

2

不确定这里是否是这种情况,因为问题不是很具体,但我遇到的一件事是 PhantomJS 1.9.7 需要该位置的 HTTP 方案。

因此,如果您正在导航localhost:42982/element,则应指定要导航到的驱动程序http://localhost:42982/element

于 2014-08-18T19:48:59.517 回答
1

即兴发挥,您可能会遇到在 Selenium 查询页面后元素加载的问题,您可以使用 waitfor.js

https://github.com/ariya/phantomjs/blob/master/examples/waitfor.js

或者可能是这样的:

driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS)

或者您要查找的 id 在框架/iframe 内,在这种情况下您需要使用

Driver.SwitchTo().Frame("frameIdentifier");
于 2013-09-10T19:52:47.337 回答