如何解决使用AndroidDriver开始在appium测试中选择ID为ID的Web元素
我是Appium和整体测试的新手。我使用Android驱动程序来测试android中的应用。
我可以处理所有点击并输入应用程序。但是在使用OAuth服务登录应用程序时会出现问题。
我使用以下驱动程序客户端。 appium dotnet driver
登录服务将在单独的Chrome浏览器中打开。我必须在网页内的输入元素中输入文本。
我使用以下代码。在调试页面上,资源仅包含chrome浏览器的android元素,而没有Web内容。
var appiumDriver = new AndroidDriver<AndroidElement>(driverUri,appiumOptions);
[Test()]
[Order(1)]
public async Task TestLogin()
{
try
{
appiumDriver.FindElementByAccessibilityId("Login").Click();
await Task.Delay(3000);
var source = appiumDriver.PageSource;
var element = appiumDriver.FindElementById("login-email");
}
catch (NoSuchElementException ex)
{
}
}
有人可以建议如何解决此问题吗?这也必须在iOS中完成,我想两者都可以用相同的方式处理。.预先感谢。
解决方法
该问题并未更改为用于在网页中搜索的Web上下文。测试流程必须是
- 执行操作以从应用程序打开网页。 (就我而言,单击“登录”按钮)
- 等待直到出现网页。 (这很重要,因为Web上下文仅在显示网页后才可用)。为此,我对网页中可见的唯一控件使用了
FindElementByClassName
,但在上一个App页面中却没有使用。肯定会有更好的方法。 - 获取可用上下文并切换到Web上下文。
- 我使用
FindByCssSelector
来查找具有id的元素。
更改为网络环境
public static void ChangeToWebContext()
{
if (driver.Context != "NATIVE_APP")
return;
var elements = driver.FindElementByClassName("android.widget.EditText");
var availableContext = driver.Contexts;
if (availableContext.Count >= 2)
{
driver.Context = availableContext[1];
return;
}
}
Usgae:
this.ChangeToWebContext();
driver.FindElementByCssSelector("#login-password");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。