【发布时间】:2021-10-13 20:33:10
【问题描述】:
使用 appium 和 selenium 自动测试和 android 应用程序。
要按下我们使用WebElement.click() 功能的各种按钮,但在某些情况下这相当慢,所以用WebDriver.tap(coordinates) 替换它我需要点击按钮的中心,所以我编写了一个简单的函数来确定该中心在哪里:
x_start = element.rect.get(X)
y_start = element.rect.get(Y)
width = element.rect.get("width")
height = element.rect.get("height")
x_result = x_start + width / 2
y_result = y_start + height / 2
self.driver.tap([(x_result, y_result)])
在我遇到屏幕底部的一些按钮不会返回左边缘之前就像一个魅力一样工作,但我最终得到了这个:
selenium.common.exceptions.InvalidArgumentException: Message: Coordinate [x=359.5, y=1213.5] is outside of element rect: [0,0][720,1184]
在我看来,出于某种原因,当调用以下任何方法时:
element.location_once_scrolled_into_view #output: {'y': 1188, 'x': 297}
element.location #output: {'y': 1188, 'x': 297}
element.location_in_view #output: {'y': 1188, 'x': 297}
element.rect #output: {'y': 1188, 'width': 125, 'height': 51, 'x': 297}
他们返回按钮的右上角,在这种情况下,我必须不x_result = x_start + width / 2,而是x_result = x_start - width / 2。然而,问题是要知道这是什么情况,因为从我调用提到的函数得到的数字中,我无法知道使用了元素的哪个角。它们似乎都返回相同的结果,我找不到任何可以返回元素范围 (x1,y1,x2,y2) 的函数,而不是 x,y,size_x,size_y。
有没有办法解决这个问题?
【问题讨论】:
标签: python android selenium-webdriver appium-android python-appium