我尝试了很多博客,并讨论了有关appium,java中ios和android滚动的问题。但似乎大多数方法已被弃用或不起作用。请帮助。 我正在使用appium 1.15.1,java,硒。
寻求快速帮助。
我正在尝试遵循以下代码,但是它滚动了两次,甚至没有单击。
嗨,
我在Mac上并且正在使用真实设备。 我正在使用带有POM的Appium 1.15.1,Selenium,Java。 我为iOS向下滑动编写了以下代码。
嗨,
public void chkMenuOptioniOS1(String sName)
{
/* This is actual path which got from inspector
//XCUIElementTypeStaticText[@name="Account Information"]
*/
String targetCell = "//XCUIElementTypeStaticText[contains(@name,'" + sName + "')]";
MobileElement cellWithText = driver.findElement(By.xpath(targetCell));
HashMap<String, String> scrollObject = new HashMap<String, String>();
scrollObject.put("element", ((RemoteWebElement)cellWithText).getId());
scrollObject.put("direction", "down");
scrollObject.put("predicateString", "value == '" + sName + "'");
scrollObject.put("toVisible", "true");
driver.executeScript("mobile:scroll", scrollObject);
try {
System.out.println("In Try Block "+cellWithText.getText());
Thread.sleep(10);
cellWithText.click();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
附加DOM对象屏幕截图。
答案 0 :(得分:1)
这些是您满足iOS和Android需求的方法:
private JavascriptExecutor js;
private HashMap<String, String> scrollObject = new HashMap<>();
void iosScrollToAnElement(IOSElement el) {
scrollObject.put("direction", "down");
scrollObject.put("element", el.getId());
js.executeScript("mobile: swipe", scrollObject);
}
void androidScrollToAnElementByText(String text) {
try {
((AndroidDriver)driver).findElementByAndroidUIAutomator("new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().text(\"" + text + "\").instance(0))");
} catch (Exception e) {
throw new NoSuchElementException("No element" + e);
}
}
此后,您需要click()
在要查找的特定元素上。 (只有用于滚动的方法)