送信/押す方法Enter AppiumのソフトキーボードからのキーAndroid自動化テスト?
いくつかのオプションを試しましたが、どれも機能していません。キーを押す代わりに、テキスト領域に入力されたテキストをクリアしています。以下はコードです(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");
キーイベントを使用して送信する:driver.press_keycode(66)
またはadb Shell input keyevent 66
を使用します。
あなたはこれを試すことができます、それはすべてのデバイスで動作します
driver.executeScript("mobile:performEditorAction", ImmutableMap.of("action", "done"));
次のコードを試してください。それは私のために働いています:
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キーを使用する前に、まずテキスト入力フィールドをクリックする必要があります。
あなたはアクションクラスを使うことができます、それは私のために働きました
Actions action = new Actions(driver);
action.sendKeys(Keys.ENTER).perform();
あなたはロボットクラスを使うことができます:-
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();
}
コードを入力してください66
Python
self.driver.press_keycode(66)
Java
((AndroidDriver<MobileElement>) driver).pressKey(new KeyEvent(AndroidKey.ENTER));
私はAndroid 9をYouTube検索でテストしました。
@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/ を参照してください。
だから、あなたはこれが好きで、過去のいくつかの状況で私のために働いてきました、そしてその実際のシンプルな
enterキーを押します
sendKeys('\n')