Я новичок в 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();
}
Проблема в том, что у Чармандера один, остальные проходят.