【问题标题】:Cannot find element before timeout ends超时结束前找不到元素
【发布时间】:2019-12-08 02:03:00
【问题描述】:

我正在使用 appium、C# 创建简单的测试自动化项目。它正确打开应用程序,之后代码无法单击该元素。并显示异常 "OpenQA.Selenium.WebDriverException: '对 URL http://127.0.0.1:4723/wd/hub/session/34e0ca2f-af1f-48ef-aafe-d6a46516a862/element 的远程 WebDriver 服务器的 HTTP 请求在 60 秒后超时。'"

Image of the exception

我已尝试更改 xpath 和驱动程序类型

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium.Appium;
using OpenQA.Selenium;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Appium.Android;
using OpenQA.Selenium.Appium.Interfaces;
using System.Threading;
using System.IO;

namespace FlowLogic_Test_Project
{
    [TestClass]
    public class UnitTest1
    {
        AppiumDriver<IWebElement> driver;

        [TestMethod]
        public void TestMethod1()
        {
            DesiredCapabilities capabilities = new DesiredCapabilities();
            capabilities.SetCapability("deviceName", "emulator-5554");
            capabilities.SetCapability("appActivity", ".MainActivity");
            capabilities.SetCapability("appPackage", "com.flowlogicclient");
            capabilities.SetCapability("automationName", "UiAutomator1");

            //Launch the Android driver
            driver = new AndroidDriver<IWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"), capabilities);

            Thread.Sleep(10000);
            driver.FindElementByXPath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup[2]/android.view.ViewGroup/android.view.ViewGroup[2]/android.view.ViewGroup").Click();
        }
    }
}

【问题讨论】:

    标签: c# automation appium


    【解决方案1】:

    你确定这个UiAutomator1 capability?如果您的模拟器运行的是 Android 5.1 API level 22 或更高版本,您必须使用UIAutomator2,否则您将无法继续进行应用程序启动。

    您还可以重新考虑 locator strategy,因为在 Android 上定位元素的首选方式是使用 resource-id。或者至少您可以使用相对 XPath,而不是从 &lt;hierarchy&gt; 标记开始,而是使用其标记值或文本唯一地标识您的元素。

    今后避免使用 Thread.sleep,因为它是某种形式的性能反模式,WebDriverWait 类和 DotNetSeleniumExtras.WaitHelpers 提供 API 以等待元素存在/可见性/可点击性/不存在/等。查看How to use Selenium to test web applications using AJAX technology 文章以熟悉该概念

    【讨论】:

    • 非常感谢您的解决方案。问题是我使用了“UiAutomator1”。根据您的解决方案,我已将其更改为 "UIAutomator2" 。现在它的选择元素正确。再次感谢你..
    猜你喜欢
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多