【问题标题】:Mobile: Android: How to hit enter after entering a text移动设备:Android:输入文本后如何按 Enter
【发布时间】:2020-01-07 03:38:41
【问题描述】:

场景如下:

  1. 我在密码字段中输入文本(这是使用 sendKeys 完成的)
  2. 现在,没有提交/输入按钮
  3. 所以我必须按 Enter 并登录到应用程序

以下是我搜索并尝试过但没有奏效的几种方法:

  1. element.sendKeys(Keys.ENTER);
  2. element.sendKeys(Keys.RETURN);

  3. 我正在使用 java 客户端 7.0.0(因为其他一些有用的功能)并且其中没有可用的 pressKeys 类型的方法 https://monosnap.com/file/tjp2F86HH0kxFFU9SJKGII8fBEK45j

driver.pressKey(new KeyEvent(AndroidKey.ENTER));(由于 Java Client 7.0.0 无法使用此功能)
((AndroidDriver)driver).pressKeyCode(AndroidKeyCode.ENTER);(由于 Java Client 7.0.0 无法使用此功能)

预期:
输入密码后,按回车,我希望用户应该登录

实际:
尝试了以上几种方法,在sendKeys之后,输入的密码被删除了

请让我知道如何自动化此场景。
谢谢!

【问题讨论】:

    标签: java android selenium appium appium-android


    【解决方案1】:

    在 EditText Xml 中添加

     <EditText
          android:id="@+id/etMobileNumber"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:inputType="number"
          android:imeOptions="actionDone"
          android:maxLength="10"
          android:maxLines="1" />
    

    和事件代码

       etMobileNumber.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                if (actionId != 0 || event.getAction() == KeyEvent.ACTION_DOWN) {
                    mRegisterButton.performClick(); // Your login button click
                    return true;
                } else {
                    return false;
                }
            }
        });
    

    【讨论】:

      【解决方案2】:

      和其他方式, -EditText

       <EditText
        android:imeOptions="actionDone" />
      

      -OnEditorAction

      etMobileNumber.setOnEditorActionListener(new TextView.OnEditorActionListener() {
          @Override
          public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
              if (actionId != 0 || event.getAction() == EditorInfo.IME_ACTION_DONE) {
                  mRegisterButton.performClick(); // Your login button click
                  return true;
              } else {
                  return false;
              }
          }
      });
      

      【讨论】:

      • 不要发布与其他人相同的答案,并告诉您与其他人相比有什么不同。
      【解决方案3】:

      您可以通过在您的 EditText 上设置一个 OnKeyListener 来做到这一点。

      passwordEditText = (EditText) findViewById(R.id.clEtAddCourse);
      passwordEditText.setOnKeyListener(new OnKeyListener()
      {
          public boolean onKey(View v, int keyCode, KeyEvent event)
          {
              if (event.getAction() == KeyEvent.ACTION_DOWN)
              {
                  switch (keyCode)
                  {
                      case KeyEvent.KEYCODE_DPAD_CENTER:
                      case KeyEvent.KEYCODE_ENTER:
                          //.. here you get enter button of keyboard pressed event perform you action here.
                          return true;
                      default:
                          break;
                  }
              }
              return false;
          }
      });
      

      【讨论】:

        【解决方案4】:

        .submit() 方法也可以用来代替输入动作。

        element.sendKeys("password");
        element.submit();
        

        【讨论】:

          猜你喜欢
          • 2018-05-18
          • 1970-01-01
          • 1970-01-01
          • 2015-03-04
          • 2018-07-19
          • 2018-06-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多