0

現在、Selenium Webdriver と C# と xUnit アサーション ライブラリを使用して、自動化された UI テストを作成しています。私は最近、 Selendroidを使用した Android デバイスの自動化と、出発点としてのドキュメントhereを検討し始めました。

ここに私が現在持っているものがあります

  • 物理的な Android デバイス。ネクサス7
  • 2015 年 4 月 28 日時点の最新の Android SDK とすべてのアップデート
  • 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()

どのような種類の要素 (input、div、select) と対話しようとするか、またはそれをどのように見つけるか (By.ID、By.CssSelector、By.Name) は問題ではなく、同じエラーを返し続けます。この時点で私は立ち往生しています。私は自動化されたテストと C# を書くのにかなりの初心者であり、Selendroid を使って水域をテストしている私のチームの唯一の人です。

お時間をいただき、ご意見をお寄せいただきありがとうございます。

4

0 に答える 0