使用移动设备滚动日期选择器:appium 中的 selectPickerWheelValue

Posted

技术标签:

【中文标题】使用移动设备滚动日期选择器:appium 中的 selectPickerWheelValue【英文标题】:Scroll Date Picker using mobile: selectPickerWheelValue in appium 【发布时间】:2019-01-11 20:59:09 【问题描述】:

我正在使用 appium,我正在尝试从 ios 的日期选择器中选择日期。

这是我的代码

javascriptExecutor js = (JavascriptExecutor) driver;
    Map<String, Object> params = new HashMap();
    params.put("order", "next");
    params.put("offset", 0.15);
    params.put("element", dayPicker);
    for (int i=0;i<10;i++) 
        js.executeScript("mobile: selectPickerWheelValue", params);
    

我想选择 day 作为 10 ,某个月份和年份。下面是ui的截图。

但是当我尝试使用上述代码时,我收到以下错误消息。

org.openqa.selenium.WebDriverException: An unknown server-side error 
occurred while processing the command. Original error: Error 
Domain=com.facebook.WebDriverAgent Code=1 "Picker wheel value has not 
been changed after 2 seconds timeout" UserInfo= . 
NSLocalizedDescription=Picker wheel value has not been changed after 2 
seconds timeout
Build info: version: '3.12.0', revision: '7c6e0b3', time: '2018-05-08T14:04:26.12Z'

我也尝试过滚动。但是,不幸的是,滚动发生了 2 次并且停止了。这是代码。

JavascriptExecutor js = (JavascriptExecutor) driver;
    Map<String, Object> params = new HashMap();
    params.put("element", dayPicker);
    params.put("direction", "down");
    params.put("text", "10");
    params.put("toVisible", "true");
    js.executeScript("mobile: scroll" , params);
    System.out.println("******"+dayPicker.getText());

我还想在申请的其他部分从国家列表中选择国家。因此,如果您能帮助我了解如何使用滚动、滑动等这些方法,将会很有帮助

我正在使用最新的 appium 桌面版本 1.6 和 appium server 1.8。

【问题讨论】:

找到替代解决方案。谢谢大家 【参考方案1】:

找到替代解决方案

((IOSDriver) driver).findElementByClassName("XCUIElementTypePickerWheel")
                        .sendKeys(text);

【讨论】:

【参考方案2】:

找到不同选择器的 xpath(日期、月份、年份)并相应地设置值(尝试 set_value('1')set_value('= 1')

date_picker = driver.find_element_by_xpath('//XCUIElementTypePickerWheel')
date_picker.set_value('1')

【讨论】:

【参考方案3】:
JavascriptExecutor js = (JavascriptExecutor) driver;
    Map<String, Object> params = new HashMap();
    params.put("order", "next");
    params.put("offset", 0.15);
    params.put("element",((RemoteWebElement) driver.findElement(dayPicker)).getId());
    for (int i=0;i<10;i++) 
        js.executeScript("mobile: selectPickerWheelValue", params);
    

【讨论】:

以上是关于使用移动设备滚动日期选择器:appium 中的 selectPickerWheelValue的主要内容,如果未能解决你的问题,请参考以下文章

Jquery mobiscroll 移动设备(手机)wap日期时间选择插件以及滑动滚动插件

如何以编程方式在移动设备上调用本机日期选择器

在移动设备上禁用 Bootstrap 日期选择器的键盘弹出窗口(Rails 4,Jquery)

引导日期选择器上的棘手问题

jQuery Mobile 日期选择器

日期选择器滚动到过去的日期,即使最小日期设置为当前日期