我使用的是iOS版本10.2,xcode版本是8.3。
有人能让我知道如何使用Appium在iOS移动自动化中隐藏键盘吗?
使用的编程语言:Java。
答案 0 :(得分:1)
您可以使用以下代码段隐藏键盘:
driver.getKeyboard().pressKey(Keys.RETURN);
答案 1 :(得分:0)
我更喜欢点击iOS键盘上的最后一个键,而不是隐藏:
@HowToUseLocators(iOSXCUITAutomation = LocatorGroupStrategy.CHAIN)
@iOSXCUITFindBy(className = "XCUIElementTypeKeyboard")
@iOSXCUITFindBy(className = "XCUIElementTypeButton")
private List<IOSElement> last_iOSKeyboardKey;
@HowToUseLocators(iOSXCUITAutomation = LocatorGroupStrategy.CHAIN)
@iOSXCUITFindBy(className = "XCUIElementTypeKeyboard")
@iOSXCUITFindBy(iOSNsPredicate = "type == 'XCUIElementTypeButton' AND " +
"(name CONTAINS[cd] 'Done' OR name CONTAINS[cd] 'return' " +
"OR name CONTAINS[cd] 'Next' OR name CONTAINS[cd] 'Go')")
private IOSElement last_iOSKeyboardKey_real;
public boolean tapLastKeyboardKey_iOS() {
System.out.println(" tapLastKeyboardKey_iOS()");
boolean bool = false;
setLookTiming(3);
try {
// one way
//bool = tapElement_XCTest(last_iOSKeyboardKey.get(last_iOSKeyboardKey.size()-1));
// slightly faster way
bool = tapElement_XCTest(last_iOSKeyboardKey_real);
} catch (Exception e) {
System.out.println(" tapLastKeyboardKey_iOS(): looks like keyboard closed!");
System.out.println(driver.getPageSource());
}
setDefaultTiming();
return bool;
}
答案 2 :(得分:0)
您可以使用java_client library方法:
driver.findElementByAccessibilityId("Hide keyboard").click();
driver.hideKeyboard(HideKeyboardStrategy.TAP_OUTSIDE);
driver.hideKeyboard(HideKeyboardStrategy.PRESS_KEY, "Done");
答案 3 :(得分:0)
我尝试使用以上所有方法。在某些情况下,它并不完美。在我的方式,它将点击键盘的左上角。
public void hideKeyboard() { if (isAndroid()) { driver.hideKeyboard(); } else { IOSDriver iosDriver = (IOSDriver) driver; // TODO: Just work for Text Field // iosDriver.hideKeyboard(); // TODO: Tap outside of Keyboard IOSElement element = (IOSElement) iosDriver.findElementByClassName("XCUIElementTypeKeyboard"); Point keyboardPoint = element.getLocation(); TouchAction touchAction = new TouchAction(driver); touchAction.tap(keyboardPoint.getX() + 2, keyboardPoint.getY() - 2).perform(); try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } } }
答案 4 :(得分:0)
我尝试了driver.hideKeyboard()
,但对我来说不起作用。
因此,我尝试了方式1:通过按按钮指定键名和方式2:检查与appium的键坐标并执行操作。两种方式都对我有用。
// way 1
driver.findElementByXPath(String.format("//XCUIElementTypeButton[@name='%s']", "Done")).click();
// way 2
TouchAction touchAction = new TouchAction(driver);
touchAction.tap(new PointOption().withCoordinates(345, 343)).perform();
答案 5 :(得分:0)
我注意到“完成”不属于键盘组。因此,我尝试使用名称“ Done”作为引用来获取元素。我最终尝试了此方法,并且有效。
driver.findElementByName("Done").click();
声明为IOSDriver的“驱动程序”集。
答案 6 :(得分:0)
Python解决方案-2020:
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
contentView.isUserInteractionEnabled = true
}