无法使用Selendroid和CSharp与web元素交互

时间:2015-04-28 18:50:06

标签: c# android selenium selenium-webdriver selendroid

我目前正在使用Selenium Webdriver编写自动UI测试,使用xUnit Assertion Library编写C#。我最近开始尝试使用Selendroid和文档here进行Android设备的自动化,以便开始。

这是我目前拥有的

  • 物理Android设备。 Nexus 7
  • 最新的Android SDK以及截至2015年4月28日的所有更新
  • 截至2015年4月28日的最新Java JDK

一切正常,直到2015年4月27日。 现在,每当我运行测试时,它将进入实际对页面上的元素执行操作的步骤并失败。

测试的一个例子:

[Fact(DisplayName = "Android Tablet Test _ 01")]
    public void AndroidTest01()
    {
        Driver.Navigate().GoToUrl("http://www.google.com");

        var google_text_box = Driver.FindElement(By.CssSelector("input#lst-ib"));
        google_text_box.Click();
    }

使用Microsoft Visual Studios对其进行调试,我可以看到google_text_box被声明并设置得很好,但是当我与它进行交互时,它就会死掉。设置后查看google_text_box的属性会显示.Selected抛出了波纹管异常,从而阻止了进一步的交互。

CATCH_ALL: io.selendroid.server.common.exceptions.SelendroidException: {"message":"Element is not selectable"}
at io.selendroid.server.model.SelendroidWebDriver.executeAtom(SelendroidWebDriver.java:211)
at io.selendroid.server.model.SelendroidWebDriver.executeAtom(SelendroidWebDriver.java:179)
at io.selendroid.server.model.AndroidWebElement.isSelected(AndroidWebElement.java:150)
at io.selendroid.server.handler.GetElementSelected.safeHandle(GetElementSelected.java:37)
at io.selendroid.server.handler.SafeRequestHandler.handle(SafeRequestHandler.java:87)
at io.selendroid.server.AndroidServlet.handleRequest(AndroidServlet.java:264)
at io.selendroid.server.common.BaseServlet.handleHttpRequest(BaseServlet.java:67)
at io.selendroid.server.common.http.ServerHandler.channelRead(ServerHandler.java:53)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319)
at io.netty.handler.traffic.AbstractTrafficShapingHandler.channelRead(AbstractTrafficShapingHandler.java:223)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:163)
at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:148)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:125)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:430)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:384)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354)
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116)
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
at java.lang.Thread.run(Thread.java:818)

当测试全部完成后,运行顶部堆栈是:

at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebDriver.InternalExecute(String driverCommandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebElement.Execute(String commandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebElement.get_Selected()

我尝试与哪种元素(输入,div,select)或我如何找到它(By.ID,By.CssSelector,By.Name)并不重要,它会一直返回相同的错误。此时我被困住了。我是编写自动化测试和C#的新手,也是我团队中唯一一个使用Selendroid测试水域的人。

提前感谢您的时间和意见!

0 个答案:

没有答案
相关问题