使用了6个文本框,单击查找它们,但sendKeys()将所有文本发送到最后一个文本框

问题描述 投票:0回答:1

以下是我为文本字段编写的代码。

driver.findElement(By.xpath("//android.widget.RelativeLayout[1]/android.widget.EditText[1]")).click();
    driver.findElement(By.xpath("//android.widget.RelativeLayout[1]/android.widget.EditText[1]")).sendKeys("Sathiya");
    driver.navigate().back();
    driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
    driver.findElement(By.xpath("//android.widget.RelativeLayout[1]/android.widget.EditText[2]")).click();
    driver.findElement(By.xpath("//android.widget.RelativeLayout[1]/android.widget.EditText[2]")).sendKeys("Rengarajan");
    driver.navigate().back();
    driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
    driver.findElement(By.xpath("//android.widget.RelativeLayout[3]/android.widget.EditText[1]")).click();
    driver.findElement(By.xpath("//android.widget.RelativeLayout[3]/android.widget.EditText[1]")).sendKeys("[email protected]");
    driver.navigate().back();
    driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
    driver.findElement(By.xpath("//android.widget.RelativeLayout[3]/android.widget.EditText[3]")).click();
    driver.findElement(By.xpath("//android.widget.RelativeLayout[3]/android.widget.EditText[3]")).sendKeys("3295739258");
    driver.navigate().back();
    driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
    driver.findElement(By.xpath("//android.widget.RelativeLayout[3]/android.widget.EditText[4]")).click();
    driver.findElement(By.xpath("//android.widget.RelativeLayout[3]/android.widget.EditText[4]")).sendKeys("Ascendas");
    driver.navigate().back();
    driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
    driver.findElement(By.xpath("//android.widget.RelativeLayout[3]/android.widget.EditText[5]")).click();
    driver.findElement(By.xpath("//android.widget.RelativeLayout[3]/android.widget.EditText[5]")).sendKeys("Taramani");
    driver.navigate().back();
    driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);

前5次单击找到确切的文本框,但是当前5个文本框执行sendkeys时 - 所有值都将输入到第6个文本框中。当对6文本框执行单击时,我收到错误,指出无法找到元素。有什么建议?

服务器日志:

处理命令时发生未知的服务器端错误。 (警告:服务器未提供任何堆栈跟踪信息)

命令持续时间或超时:60.46秒

构建信息:版本:'2.42.2',修订版:'6a6995d',时间:'2014-06-03 17:42:30'

系统信息:主机:'SR6-SM-MACAIR.local',ip:'10 .5.3.239',os.name:'Mac OS X',os.arch:'x86_64',os.version:'10 .9.4' ,java.version:'1.7.0_21'

会议ID:4d7c958f-9d8f-4989-8960-e2999cf83f75

驱动程序信息:io.appium.java_client.AppiumDriver

功能[{platform = LINUX,app = / usr / local / android-sdk / adt-bundle-mac-x86_64-20140702 / sdk / platform-tools / SETMORE-ANDROIDAPP / Setmore.apk,javascriptEnabled = true,appActivity = com。 adaptavant.setmore.ui.StartActivity,browserName =,networkConnectionEnabled = true,desired = {platformVersion = 4.4,app = / usr / local / android-sdk / adt-bundle-mac-x86_64-20140702 / sdk / platform-tools / SETMORE -ANDROIDAPP / Setmore.apk,deviceName = Google Nexus 4,platformName = Android,browserName =,appActivity = com.adaptavant.setmore.ui.StartActivity,appPackage = com.adaptavant.setmore},locationContextEnabled = false,appPackage = com.adaptavant .setmore,platformVersion = 4.4,databaseEnabled = false,platformName = Android,deviceName = Google Nexus 4,webStorageEnabled = false,warnings = {},takesScreenshot = true}]

selenium-webdriver appium
1个回答
0
投票

不确定为什么在每个back之后你需要sendkeys。代码中的一些问题 -

  1. 如果在页面上发生微小的布局更改,您的Xpath也容易出错。
  2. 你不要在代码中不断发送隐式等待。

假设所有文本框都在可见区域的同一页面上......您可以执行以下操作 -

一个。搜索所有editText(文本框),如下所示 -

elements = driver.get_webelements("//android.widget.EditText")

b)将文本发送到每个文本框

for element in elements:
    element.sendKeys("Hello world!");

如果在同一视图中有更多文本框但需要滚动,则必须在那里添加滚动逻辑。

注意:上面的代码是在python中,但我想你应该把它转换为Java并不困难

© www.soinside.com 2019 - 2024. All rights reserved.