无法使用Appium和C#在Android模拟器的浏览器中找到元素

我想使用c#和Appium在Android模拟器上自动化移动网站测试。 有一个简单的测试场景我想在开始时自动化:
1.启动浏览器
2.找到一个元素
3.清除它
4.发送密钥

第二步我遇到了问题。 每当MSTest尝试在下面的代码中执行FindElementById行时,我都会收到错误:“使用给定的搜索参数无法在页面上找到元素。”

[TestClass] public class UnitTest1 { private DesiredCapabilities _capabilities; private AndroidDriver _driver; public void InitializeDriver() { Console.WriteLine("Connecting to Appium server"); _capabilities = new DesiredCapabilities(); _capabilities.SetCapability("deviceName", "test_02"); _capabilities.SetCapability(CapabilityType.BrowserName, "Chrome"); _capabilities.SetCapability(CapabilityType.Version, "5.0.1"); _capabilities.SetCapability(CapabilityType.Platform, "Android"); //Application path and configurations _driver = new AndroidDriver(new Uri("http://127.0.0.1:4723/wd/hub"), _capabilities); } [TestMethod] public void TestMethod1() { InitializeDriver(); var element = _driver.FindElementById("com.android.browser:id/url"); element.Clear(); element.SendKeys(@"http://stackoverflow.com/"); } } 

我从UIAutomator获得的方法的输入字符串如下所示。

1

我为FindElementById输入法尝试了几种组合:
“com.android.browser:ID / URL”
“ID / URL”
“URL”
但没有运气。

我的环境:
Windows 8.1
Appium 1.3.4.1
ChromeDriver 2.14.313457
Android设备监视器24.0.2

对不起误导!!! 在浏览器中测试Web应用程序的情况下,元素应该像网页上的常用元素一样定位(而不是像android.widget.EditText和android.widget.Button这样的类)。 因此,请尝试以下示例,您将看到一些结果:

  var element = _driver .findElementByXPath("//input[@id='lst-ib']"); 

要获取定位器,您应该在桌面上运行浏览器,打开页面并使用一些工具/扩展,如Firefox中的Firebug或Chrome浏览器中的Firebug Lite。

试试这两个陈述:

 var element = _driver.FindElement(By.Id("com.android.browser:id/url"); driver.findElementsByXPath("//*[@class='com.android.browser' and @index='1']"); 

更新! 以下方法不适用于Web测试:

你能尝试使用xpath找到元素吗?

 @FindBy(xpath="//android.widget.EditText[contains(@resource-id, 'url')]") 

因此,在您的情况下,您可以尝试以下方法:

 var element = _driver.findElementByXPath("//android.widget.EditText[contains(@resource-id, 'url')]"); 

更新:在测试Web应用程序(非本机)的情况下,您应该使用网页定位器而不是Android类。