做移动端自动化,如何左右滑动K线区域,语句怎么写??

问题遇到的现象和发生背景

做移动端自动化,使用下面的语句无法左右滑动K线区域,实际情况是:十字交叉线的纵轴从左移动到右边,不是K线整体向右移动。

问题相关代码,请勿粘贴截图

TouchAction(driver).press(x=45, y=1100).wait(10).move_to(x=700, y=1100).release().perform()

运行结果及报错内容

十字交叉线的纵轴从左移动到右边,不是K线整体向右移动。

我的解答思路和尝试过的方法

曾使用下面的语句报错:
TouchAction(driver).tap(x=45, y=1100).wait(10).move_to(x=700, y=1100).release().perform()
使用上面的语句报错如下:
[Deprecated] 'TouchAction' action is deprecated. Please use W3C actions instead.
[Deprecated] 'TouchAction' action is deprecated. Please use W3C actions instead.
810 1440
Traceback (most recent call last):
File "D:/AUTO-TEST/APP-AUTOTEST/COMPARE-WITH-FUTU/Futu-HQ-OneMinuteKLine.py", line 110, in
get_futu_hq_onemk()
File "D:/AUTO-TEST/APP-AUTOTEST/COMPARE-WITH-FUTU/Futu-HQ-OneMinuteKLine.py", line 47, in get_futu_hq_onemk
TouchAction(driver).tap(x=45, y=1100).wait(100).move_to(x=700, y=1100).release().perform()
File "C:\Users\19216\AppData\Roaming\Python\Python37\site-packages\appium\webdriver\common\touch_action.py", line 171, in perform
self._driver.execute(Command.TOUCH_ACTION, params)
File "C:\Users\19216\AppData\Roaming\Python\Python37\site-packages\selenium\webdriver\remote\webdriver.py", line 424, in execute
self.error_handler.check_response(response)
File "C:\Users\19216\AppData\Roaming\Python\Python37\site-packages\appium\webdriver\errorhandler.py", line 31, in check_response
raise wde
File "C:\Users\19216\AppData\Roaming\Python\Python37\site-packages\appium\webdriver\errorhandler.py", line 26, in check_response
super().check_response(response)
File "C:\Users\19216\AppData\Roaming\Python\Python37\site-packages\selenium\webdriver\remote\errorhandler.py", line 247, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidElementStateException: Message: Cannot perform touch on the element
Stacktrace:
io.appium.uiautomator2.common.exceptions.InvalidElementStateException: Cannot perform touch on the element
at io.appium.uiautomator2.handler.TouchEvent.safeHandle(TouchEvent.java:72)
at io.appium.uiautomator2.handler.request.SafeRequestHandler.handle(SafeRequestHandler.java:38)
at io.appium.uiautomator2.server.AppiumServlet.handleRequest(AppiumServlet.java:252)
at io.appium.uiautomator2.server.AppiumServlet.handleHttpRequest(AppiumServlet.java:242)
at io.appium.uiautomator2.http.ServerHandler.channelRead(ServerHandler.java:44)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:435)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267)
at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:250)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1294)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:911)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:611)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:514)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:468)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:438)
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:140)
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)
at java.lang.Thread.run(Thread.java:818)

我想要达到的结果

可以左右滑动K线,可以看到以前的K线。

img

首先定位这个图的每个点能否定位,如果不能定位,只能通过图片识别处理找出k线的位置,这个涉及opencv的应用。