c# - 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 一个,其余的通过。
解决方案
推荐阅读
- vue.js - Vue,如何测试子组件(通过 v-show 显示)是否可见
- javascript - 有没有办法让 electron-js 桌面应用分发包体积更小?
- python - 有没有办法先输出一个句子然后在 tkinter 中退出
- php - 编译(几乎)所有代理标头以检索真实用户 ip?
- html - 弯曲内侧的横向距离
- javascript - 如何在javascript中制作2个小数位
- java - Neo4j“执行架构修改后尝试执行写入查询”错误
- react-native - React Native 中的 Sleep Graph UI
- ffmpeg - 使用ffmpeg将pngs合并为mp4时,透明背景意外变绿
- settings - 如何在暗模式下更改偏好颜色?