Karate 如何在空手道中从弹出的日期选择器中选择月份和日期

Karate 如何在空手道中从弹出的日期选择器中选择月份和日期,karate,Karate,我正在做一个项目,使用空手道和appium自动化移动应用程序。我可以使用普通单击()从弹出的日期选择器中选择下一个/前三个月和下一个/前三个日期。例如,我可以选择前3个月,如3月、2月和1月w.r.t当前/默认月(即4月),并可以选择下三个月5月、6月和7月w.r.t当前/默认月(即4月)。同样,我可以选择之前的日期,如29、28和27 w.r.t当前/默认日期(即30)。现在我面临一个问题,当我试图选择一个月,而不是这3个月和同一个问题的日期也。它抛出一个错误,表示“无法定位元素” 仅供参考-

我正在做一个项目,使用空手道和appium自动化移动应用程序。我可以使用普通单击()从弹出的日期选择器中选择下一个/前三个月和下一个/前三个日期。例如,我可以选择前3个月,如3月、2月和1月w.r.t当前/默认月(即4月),并可以选择下三个月5月、6月和7月w.r.t当前/默认月(即4月)。同样,我可以选择之前的日期,如29、28和27 w.r.t当前/默认日期(即30)。现在我面临一个问题,当我试图选择一个月,而不是这3个月和同一个问题的日期也。它抛出一个错误,表示“无法定位元素”

仅供参考-在dom中,我可以检查所有月份和日期元素 我甚至尝试了下面的代码,它不起作用,它无法定位元素

和鼠标()

如果我错了,请纠正我,我怀疑这一点,因为不是所有的月份和日期都在UI端可见,所以它们必须被隐藏,测试无法找到这些隐藏的元素。 请您就这个问题提供您的意见


通常,iOS日期选择器可以通过两种方式处理

两者都涉及在没有标签的情况下唯一地标识每个日期选择器轮(即定位器不应具有日期/月/年值)

选项1:

在空手道中调用
input()
,并传递要选择的值

* driver.input(<Locator>, "Oct")

请参阅:

agh另一个android问题。老实说,它可能需要一些社区的贡献-所以,考虑自己做,或影响你知道的人这样做。空手道非常接近,在我的观点1中付出一些努力是值得的-在我的情况下不起作用,因为我尝试使用的定位器是Xpath,即//XguiElementTypeButton[@label='Apr'],正如您可以看到的,月份名称附在Xpath上,其他月份定位器也是如此。选项2-我无法按id定位元素,因为该值在所有月份都为空。它只能通过上面指定的Xpath访问。那么您是否有类似于driver.elementXpath()的东西?我已经在问题部分附上了检查器的详细信息以供参考。对于这两个选项,它应该与
//xguielementtypebutton[@label='Apr']
一起使用,但我担心定位器会每月更改,您的开发团队可能必须为该元素添加适当的唯一
标识符以使其可访问。
* def datePickerId = driver.elementId(<Locator>)
* def arguments = {"order": "next", "offset": 0.15, "element": "#(datePickerId)"}
* driver.script("mobile: selectPickerWheelValue", arguments)