weixin_0520 2020-02-24 23:26 采纳率: 0%
浏览 631

appium中set_value()和send_keys()使用报错

Appium无法向搜索框输入英文,汉子等

      **#self.driver.find_element_by_class_name('android.widget.EditText').send_keys('123')**
      self.driver.find_element_by_id("com.android.browser:id/main_content").set_value("123")

运行中的网页源码:

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<hierarchy index="0" class="hierarchy" rotation="0" width="1080" height="1920">
  <android.widget.FrameLayout index="0" package="com.android.browser" class="android.widget.FrameLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1080,1920]" displayed="true">
    <android.widget.FrameLayout index="0" package="com.android.browser" class="android.widget.FrameLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1080,1920]" displayed="true">
      <android.widget.FrameLayout index="0" package="com.android.browser" class="android.widget.FrameLayout" text="" resource-id="android:id/content" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,50][1080,1920]" displayed="true">
        <android.widget.LinearLayout index="0" package="com.android.browser" class="android.widget.LinearLayout" text="" resource-id="com.android.browser:id/vertical_layout" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,50][1080,1920]" displayed="true">
          <android.widget.FrameLayout index="1" package="com.android.browser" class="android.widget.FrameLayout" text="" resource-id="com.android.browser:id/fixed_titlebar_container" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,50][1080,173]" displayed="true">
            <android.widget.RelativeLayout index="0" package="com.android.browser" class="android.widget.RelativeLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,50][1080,173]" displayed="true">
              <android.widget.RelativeLayout index="0" package="com.android.browser" class="android.widget.RelativeLayout" text="" resource-id="com.android.browser:id/titlebar" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,50][1080,173]" displayed="true">
                <android.widget.LinearLayout index="0" package="com.android.browser" class="android.widget.LinearLayout" text="" resource-id="com.android.browser:id/taburlbar" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,50][1080,154]" displayed="true">
                  <android.widget.LinearLayout index="0" package="com.android.browser" class="android.widget.LinearLayout" text="" resource-id="com.android.browser:id/title_bg" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[16,50][872,154]" displayed="true">
                    <android.widget.FrameLayout index="0" package="com.android.browser" class="android.widget.FrameLayout" text="" content-desc="网页信息" resource-id="com.android.browser:id/iconcombo" checkable="false" checked="false" clickable="true" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[18,50][106,154]" displayed="true">
                      <android.widget.ImageView index="0" package="com.android.browser" class="android.widget.ImageView" text="" resource-id="com.android.browser:id/favicon" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[30,70][94,134]" displayed="true" />
                    </android.widget.FrameLayout>
                    <android.widget.EditText index="1" package="com.android.browser" class="android.widget.EditText" text="www.baidu.com" resource-id="com.android.browser:id/url" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="true" password="false" scrollable="false" selected="false" bounds="[106,50][868,154]" displayed="true" />
                  </android.widget.LinearLayout>
                  <android.widget.ImageButton index="1" package="com.android.browser" class="android.widget.ImageButton" text="" content-desc="网页管理器" resource-id="com.android.browser:id/tab_switcher" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[888,50][984,154]" displayed="true" />
                  <android.widget.ImageButton index="2" package="com.android.browser" class="android.widget.ImageButton" text="" content-desc="更多选项" resource-id="com.android.browser:id/more" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[984,50][1080,154]" displayed="true" />
                </android.widget.LinearLayout>
                <android.widget.ImageView index="1" package="com.android.browser" class="android.widget.ImageView" text="" resource-id="com.android.browser:id/progress" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,133][1080,173]" displayed="true" />
              </android.widget.RelativeLayout>
            </android.widget.RelativeLayout>
          </android.widget.FrameLayout>
          <android.widget.FrameLayout index="2" package="com.android.browser" class="android.widget.FrameLayout" text="" resource-id="com.android.browser:id/main_content" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,154][1080,1920]" displayed="true">
            <android.widget.LinearLayout index="0" package="com.android.browser" class="android.widget.LinearLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,154][1080,1920]" displayed="true">
              <android.widget.FrameLayout index="0" package="com.android.browser" class="android.widget.FrameLayout" text="" resource-id="com.android.browser:id/webview_wrapper" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,154][1080,1920]" displayed="true">
                <android.webkit.WebView index="0" package="com.android.browser" class="android.webkit.WebView" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,154][1080,1920]" displayed="true" />
              </android.widget.FrameLayout>
            </android.widget.LinearLayout>
          </android.widget.FrameLayout>
        </android.widget.LinearLayout>
      </android.widget.FrameLayout>
    </android.widget.FrameLayout>
  </android.widget.FrameLayout>
</hierarchy>

报错信息:

ERROR: test_search (__main__.Test_baidu)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "E:/test/appium1/test1/tbaidu.py", line 32, in test_search
    self.driver.find_element_by_id("com.android.browser:id/main_content").set_value("123")
  File "E:\test\appium1\venv\lib\site-packages\appium\webdriver\webelement.py", line 205, in set_value
    self._execute(Command.SET_IMMEDIATE_VALUE, data)
  File "E:\test\appium1\venv\lib\site-packages\selenium\webdriver\remote\webelement.py", line 633, in _execute
    return self._parent.execute(command, params)
  File "E:\test\appium1\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "E:\test\appium1\venv\lib\site-packages\appium\webdriver\errorhandler.py", line 29, in check_response
    raise wde
  File "E:\test\appium1\venv\lib\site-packages\appium\webdriver\errorhandler.py", line 24, in check_response
    super(MobileErrorHandler, self).check_response(response)
  File "E:\test\appium1\venv\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidElementStateException: Message: Cannot set the element to '123'. Did you interact with the correct element?
  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-07-25 20:17
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    可能是因为搜索框的element属性没有正确定位到或者是需要先清空搜索框才能输入内容。你可以尝试以下方法来解决这个问题:
    1. 首先确保正确定位到搜索框的元素。例如可以使用id或者class name等属性来找到对应的元素。
    2. 如果搜索框中已经有内容,可以先清空搜索框再输入内容。例如可以使用clear()方法清空搜索框。
    3. 如果仍然无法输入内容,可以尝试使用JS注入的方式来输入内容。 以下是一个示例代码,假设搜索框的id为"searchBox":
    # 导入相应的库
    from appium import webdriver
    import time
    # 初始化driver
    desired_caps = {
        'platformName': 'Android',
        'platformVersion': '9',
        'deviceName': 'emulator-5554',
        'appPackage': 'com.android.browser',
        'appActivity': 'com.android.browser.BrowserActivity'
    }
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    # 定位到搜索框,清空内容并输入新内容
    search_box = driver.find_element_by_id("searchBox")
    search_box.clear()
    search_box.send_keys("Hello World")
    # 关闭driver
    driver.quit()
    

    请注意,以上代码仅作为示例,具体的定位元素和操作方法需要根据你的实际情况进行调整。希望能帮到你解决问题。

    评论

报告相同问题?

悬赏问题

  • ¥15 easypoi导出复杂excel
  • ¥20 C++初高中竞赛题,devc++可以通过的
  • ¥60 二次元手游日常任务自动化代肝(相关搜索:自动化)
  • ¥15 mysql将查询的结果作为动态列名怎么实现
  • ¥50 python自动地图截图脚本
  • ¥15 悬赏一本书(内含Matlab代码)的书名、作者
  • ¥20 瑞萨RA4M1芯片刷写为arduino r4 minima
  • ¥15 fastreport怎么判断当前页数
  • ¥15 Kylin-Desktop-V10-GFB-Release-JICAI_02- 2207-Build14-ARM64.iso有没有这个版本的系统啊
  • ¥15 能不能通过蓝牙将传感器数据传送到手机上