首页 > 解决方案 > FindElementByXPath 不会在页面外找到元素

问题描述

我是 Appium 的新手,但在 Selenium 方面有一些经验,两者都使用 C#,因为我知道这门语言。我正在使用 Pokedex 应用程序来学习 Selenium,并且我已经设法让它打开列表中的前 4 个。但是,当我试图让它以完全相同的方式打开第 5 个时(我正在搜索的对象在屏幕的一半之外),它会返回OpenQA.Selenium.NoSuchElementException: An element could not be located on the page using the given search parameters.. 我花了很多时间试图弄清楚这一点并在网上查找等,但是我找不到任何东西。

AppiumDriver<AndroidElement> driver;
    [TestInitialize]
    public void OpenApp()
    {
        DesiredCapabilities cap = new DesiredCapabilities();
        cap.SetCapability("noReset", "true");
        cap.SetCapability("device", "Android");
        cap.SetCapability("deviceName", "Galaxy S8");
        cap.SetCapability("platformVersion", "8.0.0");
        cap.SetCapability("platformName", "Android");
        cap.SetCapability("automationName", "UiAutomator2");
        cap.SetCapability("appPackage", "com.goldex");
        cap.SetCapability("appActivity", "com.goldex.view.activity.MainActivity");
        driver = new AndroidDriver<AndroidElement>(new Uri("http://127.0.0.1:4723/wd/hub"), cap);
    }
    [TestMethod]
    public void ViewBulbasaur()
    {
        // Arrange
        driver.FindElementByXPath("//android.widget.TextView[contains(@text, 'Bulbasaur')]").Click();
        // Assert
        var objText = driver.FindElementByXPath("//android.widget.TextView[contains(@text, 'Bulbasaur #001')]").Text;
        Assert.AreEqual("Bulbasaur #001", objText);
    }
    [TestMethod]
    public void ViewIvysaur()
    {
        //Arrange
        driver.FindElementByXPath("//android.widget.TextView[contains(@text, 'Ivysaur')]").Click();
        // Assert
        var objText = driver.FindElementByXPath("//android.widget.TextView[contains(@text, 'Ivysaur #002')]").Text;
        Assert.AreEqual("Ivysaur #002", objText);
    }
    [TestMethod]
    public void ViewVenusaur()
    {
        //Arrange
        driver.FindElementByXPath("//android.widget.TextView[contains(@text, 'Venusaur')]").Click();
        // Assert
        var objText = driver.FindElementByXPath("//android.widget.TextView[contains(@text, 'Venusaur #003')]").Text;
        Assert.AreEqual("Venusaur #003", objText);
    }
    [TestMethod]
    public void ViewMegaVenusaur()
    {
        //Arrange
        driver.FindElementByXPath("//android.widget.TextView[contains(@text, 'Mega Venusaur')]").Click();
        // Assert
        var objText = driver.FindElementByXPath("//android.widget.TextView[contains(@text, 'Mega Venusaur #003')]").Text;
        Assert.AreEqual("Mega Venusaur #003", objText);
    }
    [TestMethod]
    public void ViewCharmander()
    {
        //Arrange
        driver.FindElementByXPath("//android.widget.TextView[contains(@text, 'Charmander')]").Click();
        // Assert
        var objText = driver.FindElementByXPath("//android.widget.TextView[contains(@text, 'Charmander #004')]").Text;
        Assert.AreEqual("Charmander #004", objText);
    }
    [TestCleanup]
    public void CloseApp()
    {
        driver.CloseApp();
    }

问题在于 Charmander 一个,其余的通过。

标签: c#appiumappium-android

解决方案


推荐阅读