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

时间:2014-09-22 06:35:29

标签: selenium-webdriver appium

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

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("sathiyarengarjan@setmore.com");
    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秒

构建信息:版本:&#39; 2.42.2&#39;,修订版:&#39; 6a6995d&#39;,时间:&#39; 2014-06-03 17:42:30&#39; < / p>

系统信息:主持人:&#39; SR6-SM-MACAIR.local&#39;,ip:&#39; 10.5.3.239&#39;,os.name:&#39; Mac OS X&#39 ;,os.arch:&#39; x86_64&#39;,os.version:&#39; 10.9.4&#39;,java.version:&#39; 1.7.0_21&#39;

会话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}]

1 个答案:

答案 0 :(得分:0)

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

  1. 如果页面上的布局发生细微变化,您的Xpath也容易出错。

  2. 您不会在代码中连续发送隐式等待。

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

a。搜索所有这样的editText(textboxes)-

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

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

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

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

注意:上面的代码在python中,但是我想将其转换为Java应该不难