如果两个文本字段在appium 1.7.for ios中具有相同的类名,如何编写xpath

时间:2017-11-24 06:48:09

标签: appium

任何人都可以帮我在appium 1.7 for iOS中编写xpath ..

如果两个同名的班级

driver.findElementByClassName("TextField").sendKeys("abc");
driver.findElementByClassName("TextField").sendKeys("1234");

2 个答案:

答案 0 :(得分:1)

在任何情况下,使用className都不是可靠的搜索策略,因为它不是唯一的。

我通常建议遵循以下规则:

  • 对自动化测试中使用的大多数元素都有唯一的AccessibilityId(如果他们同意解决此问题,请与开发人员交谈)
  • 如果没有,请构建与Xpath或更多唯一AccessibilityId
  • 的其他元素相关的唯一className

作为临时解决方案,您可以这样做:

List<WebElement> textfields = driver.findElementsByClassName("TextField");
textFields.get(0).sendKeys("abc");
textFields.get(1).sendKeys("1234");

由于您没有提供页面来源,因此最好使用driver.getPageSource()将其打印出来,并考虑一下您输入的优秀XPath:

List<WebElement> textfields = driver.findElementsByXpath(<your xpath>);

答案 1 :(得分:-1)

以下代码适用于我

driver.findElementByName(“没有帐户?注册”)。click(); driver.findElementByClassName( “文本字段”)的SendKeys( “ABC”); driver.findElementByClassName( “SecureTextField”)的SendKeys( “12345”)。 。driver.findElementByClassName( “SecureTextField”)的SendKeys(Keys.ENTER); driver.findElementByXPath( “(// XCUIElementTypeSecureTextField [2]”)的SendKeys( “12345”)。 。driver.findElementByXPath( “(// XCUIElementTypeTextField)[2]”)的SendKeys(Keys.ENTER);         driver.findElementByXPath( “(// XCUIElementTypeTextField)[2]”)的SendKeys( “9876543210”);