我必须创建转移。当我运行脚本时,转移'已启用'的按钮是错误的因此脚本无法点击'转移'按钮&失败。我附上了uiautomator viewer dump的屏幕截图。
我找到的解决方法是手动点击金额编辑框,然后启用屏幕上的Android键盘,并手动输入数值'金额'田野&然后'转移'按钮已启用&可以点击。但我不知道如何从屏幕上的Android键盘输入编辑框中的值,然后摆脱这个键盘输入日期&按'转移'按钮。
非常感谢您的帮助。感谢。
答案 0 :(得分:0)
首先设置以下功能:
capabilities.setCapability("unicodeKeyboard", true);
capabilities.setCapability("resetKeyboard", true);
第二次尝试按以下方式隐藏键盘:
driver.hideKeyboard(); // doesn't work on newer versions of appium
或试试这个:
driver.pressKeyCode(AndroidKeyCode.BACK); //this also doesn't work on all devices but give it a try
对于日期控制,我不太确定您使用日期选择器或某些自定义日期控件的控件,但是在每个操作上都尝试隐藏键盘。
答案 1 :(得分:0)
您可以使用以下代码段隐藏软键盘。它对我有用。
public void someMethod(){
driver.getKeyboard();
try {
if (checkSoftKeyboard())
driver.hideKeyboard();
} catch (IOException e) {
e.printStackTrace();
}
}
public boolean checkSoftKeyboard() throws IOException {
boolean isKeyboardPresent = false;
Process p = Runtime.getRuntime().exec("adb shell dumpsys input_method | grep mInputShown");
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String outputText = "";
while ((outputText = in.readLine()) != null) {
if(!outputText.trim().equals("")){
String keyboardProperties[]=outputText.split(" ");
String keyValue[]=keyboardProperties[keyboardProperties.length-1].split("=");
String softkeyboardpresenseValue=keyValue[keyValue.length-1];
if(softkeyboardpresenseValue.equalsIgnoreCase("false")){
isKeyboardPresent=false;
}else{
isKeyboardPresent=true;
}
}
}
in.close();
return isKeyboardPresent;
}
checkSoftKeyboard 方法会检查软键盘是否已经存在?如果它在那里它将简单地隐藏软键盘。然后,您将能够看到转移按钮。
希望这对你有用。谢谢!答案 2 :(得分:0)
我能够解决这个问题。我的方法是首先点击'Amount'字段,然后sendkeys为amount的值。有关详细信息,请参阅以下代码: -
//locating the amount field using xpath
MobileElement amount = driver.findElement(By.xpath("//android.widget.EditText[@resource-id='com.abc.rbanking:id/workflow_step_amount_value']"));
amount.click();
amount.sendKeys("1.25");
//clicking and sendkeys would enable the disabled 'Transfer' button
//locating the 'Date' field and click it. Clicking it would get rid of soft android keyboard
driver.findElement(By.xpath("//*[@text = 'Date']")).click();
Thread.sleep(3000);
driver.findElement(By.id("com.abc.rbanking:id/back_button")).click();
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.findElement(By.xpath("//android.widget.Button[@resource-id='com.abc.rbanking:id/PrimaryButton' and @text='Transfer']")).click();