当前位置: 首页 > 知识库问答 >
问题:

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

薛鹏飞
2023-03-14

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

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文本框执行click时,出现错误,说明无法定位元素。有什么建议吗?

服务器日志:

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

命令持续时间或超时: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。阿皮姆。java\u客户端。AppiumDriver公司

功能[{平台=LINUX,应用程序=/usr/本地/android sdk/adt-bundle-mac-x86\U 64-20140702/sdk/平台工具/SETMORE-ANDROIDAPP/SETMORE.apk,javascriptEnabled=true,appActivity=com.adapavant.SETMORE.ui.StartActivity,browserName=,networkConnectionEnabled=true,所需={platformVersion=4.4,app=/usr/local/android sdk/adt-bundle-mac-x86\u 64-20140702/sdk/platformtools/SETMORE-ANDROIDAPP/SETMORE.apk,deviceName=Google Nexus 4,platformName=android,browserName=,appActivity=com.adapavant.SETMORE.ui.StartActivity,appPackage=com.adapavant.SETMORE},locationContextEnabled=false,appPackage=com。adaptavant。setmore,platformVersion=4.4,databaseEnabled=false,platformName=Android,deviceName=Google Nexus 4,webStorageEnabled=false,warnings={},takesScreenshot=true}]

共有1个答案

焦正德
2023-03-14

不确定为什么您需要在每次sendkey之后返回。代码中的一些问题-

>

  • 此外,如果页面上发生微小的布局更改,Xpath很容易出错。

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

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

    a、 像这样搜索所有editText(文本框)--

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

    b)向每个文本框发送文本

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

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

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

  •  类似资料:
    • 我有两个表单,我想从form1中获取text box1的值并将其显示为form2中text box2的值。我还希望text box2中的文本以相同的形式(form2)出现在text box3中,但是当我运行程序时,这些值不会显示在text box3上。我希望你明白逻辑,因为它真的很混乱,我不能再简单了。这是我正在尝试做的代码: 我想获取textbox2的值并将其显示在textbox3上(两者都在同

    • 我是ASP的新手。网络开发。我想问一下,在点击gridview中的链接后,如何将数据从grid view控件显示到textbox控件。请注意下面的链接代码。此外,我不想使用自动生成选择按钮,因为显示默认为“选择”,而不是数据库中的真实数据。

    • 错误:NoSuChelementException:没有这样的元素:无法定位元素:{“method”:“xpath”,“selector”:“//td[@class='c($PrimaryColor)W(51%)']”}(会话信息:chrome=77.0.3865.120) 我的代码如下: 这是我试图从“https://finance.yahoo.com/quote/goog?p=goog”中搜索

    • 问题内容: 我想知道是否有一种方法可以从HTML的文本框中获取内容,将其输入flask,然后使用Python解析该数据。我以为这可能涉及一些JS,但我可能是错的。有任何想法吗? 问题答案: 除非你想做更复杂的事情,否则将数据从HTML表单输入Flask非常简单。 创建一个接受POST请求()的视图。 访问字典中的表单元素。

    • 问题内容: 我想将某些文本行从一个文本文件复制到另一个文件。在我当前的脚本中,当我搜索字符串时,它会随后复制所有内容,如何只复制文本的特定部分?例如,仅在其中包含“ tests / file / myword”的情况下才复制行? 当前代码: 问题答案: 单线: 推荐搭配: 使用更少的内存:

    • 问题内容: 假设我们有许多文本文件,如下所示: 文件1: 文件2: 文件3: 文件4: 我们如何制作一个文本文件,如下所示: 结果: 相关代码可能是: 在这之后?有什么帮助吗? 问题答案: 您可以将每个文件的内容直接读取到输出文件句柄的write方法中,如下所示: