FindElementByXPath не найдет элементы вне страницы - PullRequest
0 голосов
/ 25 сентября 2018

Я новичок в 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();
    }

Проблема в том, что у Чармандера один, остальные проходят.

...