如何在Android自动化测试中从Appium中的软键盘发送/按Enter键? 我尝试了几个选项,但它们都没有工作 - 而不是按键,它们正在清除在文本区域中输入的文本。下面是代码(使用JAVA语言):
String app_package_name = "abc.xyz.android";
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("deviceName", "Nexus_5X_API_23");
capabilities.setCapability("platformVersion", "6.0");
capabilities.setCapability("appPackage", app_package_name);
capabilities.setCapability("appActivity", app_package_name + ".activity.StartupActivity_");
String url = "http://127.0.0.1:4723/wd/hub";
AndroidDriver driver = new AndroidDriver(new URL(url), capabilities);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
By password = By.id(app_package_name_with_id + "et_password");
WebElement enterPassword = driver.findElement(password);
enterPassword.click();
driver.getKeyboard().sendKeys("12345");
driver.getKeyboard().sendKeys(Keys.ENTER); // THIS IS NOT WORKING.
driver.getKeyboard().sendKeys(Keys.RETURN); // THIS IS ALSO NOT WORKING.
driver.pressKeyCode(AndroidKeyCode.ENTER); // THIS IS ALSO NOT WORKING.
driver.pressKeyCode(AndroidKeyCode.KEYCODE_NUMPAD_ENTER); // SAME HERE.
enterPassword.sendKeys(Keys.ENTER); // SAME HERE.
如果有人能帮助我实现它吗?
使用前
((AndroidDriver)driver).pressKeyCode(AndroidKeyCode.ENTER);
设置以下所需功能
capabilities.setCapability("unicodeKeyboard", "true");
capabilities.setCapability("resetKeyboard", "true");
使用keyevent发送使用:driver.press_keycode(66)
或使用adb shell input keyevent 66
你可以使用机器人类: -
Robot robot;
try {
robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
} catch (AWTException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
如果您的测试用例将在后台执行,则不建议使用。机器人框架只是无关紧要地进入而没有断言任何东西。
或者你可以尝试下面的代码: -
driver.pressKeyCode(AndroidKeyCode.KEYCODE_NUMPAD_ENTER );
资料来源: - (还有其他方法可以按回车): -
https://discuss.appium.io/t/how-to-click-enter-after-entering-some-text/3136/4
希望它能帮到你:)
这对我有用:
try {
driver.hideKeyboard();
} catch (Exception e) {
e.printStackTrace();
}
你可以试试这个,它适用于所有设备
driver.executeScript("mobile:performEditorAction", ImmutableMap.of("action", "done"));
@akash和@LuckyLikey的答案让我在JavaScript中找到了这个解决方案:
return driver.waitForElementById(<elementId>).type(<text to type>).click().execute( "mobile: performEditorAction", { "action": "search" } );
这允许我找到文本字段,输入一些文本,并提交搜索命令(与单击键盘中的搜索图标相同)。当然,你必须用适当的值替换<elementId>
和<text to type>
。有关“mobile:performEditorAction”的详细信息,请参阅http://appium.io/docs/en/commands/mobile-command/。
请尝试以下代码。它对我有用:
import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.android.nativekey.AndroidKey;
import io.appium.java_client.android.nativekey.KeyEvent;
((AndroidDriver<MobileElement>) driver).pressKey(new KeyEvent(AndroidKey.ENTER));
在使用enter键之前,必须先单击文本输入字段。