C# 在appium测试中选择id为的web元素已使用AndroidDriver启动

C# 在appium测试中选择id为的web元素已使用AndroidDriver启动,c#,appium,appium-android,C#,Appium,Appium Android,我对Appium和整个测试都是新手。我用Android驱动程序在Android上测试了一个应用程序 我可以处理应用程序中的所有单击和键入操作。但是在使用OAuth服务登录应用程序时会出现问题 我使用以下驱动程序客户端 登录服务在单独的chrome浏览器中打开。我必须在网页内的输入元素中键入文本 我使用以下代码。在调试页面资源中,只有chrome浏览器的android元素,没有任何web内容 var-appiumDriver=新的AndroidDriver(驱动程序、应用程序选项); [测试()]

我对Appium和整个测试都是新手。我用Android驱动程序在Android上测试了一个应用程序

我可以处理应用程序中的所有单击和键入操作。但是在使用OAuth服务登录应用程序时会出现问题

我使用以下驱动程序客户端

登录服务在单独的chrome浏览器中打开。我必须在网页内的输入元素中键入文本

我使用以下代码。在调试页面资源中,只有chrome浏览器的android元素,没有任何web内容

var-appiumDriver=新的AndroidDriver(驱动程序、应用程序选项);
[测试()]
[命令(1)]
公共异步任务TestLogin()
{
尝试
{
appiumDriver.FindElementByAccessibilityId(“登录”)。单击();
等待任务。延迟(3000);
var source=appiumDriver.PageSource;
var element=appiumDriver.FindElementById(“登录电子邮件”);
}
捕获(无接触元素例外)
{
}
}

有人能建议如何处理这个问题吗?这也必须在iOS中完成,我想两者都可以用相同的方式处理。。提前感谢。

问题没有更改为在网页中搜索的web上下文。测试流程必须是

  • 执行操作以从应用程序打开网页。(在我的情况下,单击登录按钮)
  • 等待网页出现。(这很重要,因为web上下文只有在网页出现后才可用)为此,我使用了
    FindElementByClassName
    作为唯一控件,该控件在网页中可见,但在上一个应用程序页面上不可见。肯定有更好的办法
  • 获取可用上下文并切换到web上下文
  • 我使用
    FindByCssSelector
    查找id为的元素
  • 更改为web上下文

    publicstaticvoid ChangeToWebContext()
    {
    if(driver.Context!=“本机应用程序”)
    返回;
    var elements=driver.FindElementByClassName(“android.widget.EditText”);
    var availableContext=driver.context;
    如果(availableContext.Count>=2)
    {
    driver.Context=availableContext[1];
    返回;
    }
    }
    
    Usgae:

    this.ChangeToWebContext();
    driver.findelementbycsselector(“#登录密码”);
    
    该问题未更改为在网页中搜索的web上下文。测试流程必须是

  • 执行操作以从应用程序打开网页。(在我的情况下,单击登录按钮)
  • 等待网页出现。(这很重要,因为web上下文只有在网页出现后才可用)为此,我使用了
    FindElementByClassName
    作为唯一控件,该控件在网页中可见,但在上一个应用程序页面上不可见。肯定有更好的办法
  • 获取可用上下文并切换到web上下文
  • 我使用
    FindByCssSelector
    查找id为的元素
  • 更改为web上下文

    publicstaticvoid ChangeToWebContext()
    {
    if(driver.Context!=“本机应用程序”)
    返回;
    var elements=driver.FindElementByClassName(“android.widget.EditText”);
    var availableContext=driver.context;
    如果(availableContext.Count>=2)
    {
    driver.Context=availableContext[1];
    返回;
    }
    }
    
    Usgae:

    this.ChangeToWebContext();
    driver.findelementbycsselector(“#登录密码”);