不能单击appium中的按钮,但是其他一些可以

时间:2019-09-02 06:39:50

标签: python appium

我是python的新手,在编写测试用例时遇到问题。

实际上,我尝试在Appium中将find_element与xpath一起使用,但是它报告超时,然后我使用协调方法并尝试单击按钮,但仍然失败。可以单击我的某些按钮很奇怪。

下面是我的代码:

    self.action2 = TouchAction(self.driver)

    i = 0
    while i < 10:
            self.driver.swipe(x / 2, y * 9/10, x / 2, y * 5/100)
            time.sleep(1)
            i += 1

    self.action2.move_to(700,2620).tap().perform()

我希望光标应该移动到(x偏移量,y偏移量),但是它失败了。

这是日志:

>       self.user_login(username, password)
>       self.action2.move_to(700,2620).tap().perform()
C:\learnPython\lib\site-packages\appium\webdriver\common\touch_action.py:115: in move_to

>       self._add_action('moveTo', self._get_opts(el, x, y))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <appium.webdriver.common.touch_action.TouchAction object at 0x00000241EC651358>
element = 700, x = 2620, y = None, duration = None, pressure = None

>     def _get_opts(self, element, x, y, duration=None, pressure=None):
        opts = {}
        if element is not None:
>           opts['element'] = element.id
E           AttributeError: 'int' object has no attribute 'id'
  

C:\ learnPython \ lib \ site-packages \ appium \ webdriver \ common \ touch_action.py:160:AttributeError

2 个答案:

答案 0 :(得分:0)

我查看了appium的源代码,可以看到move_to得到3个参数https://github.com/appium/python-client/blob/master/appium/webdriver/common/touch_action.py#L104

因此,在您的情况下,请将element参数设置为700,这就是为什么出现错误的原因。

您可以尝试

self.action2.move_to(x=700,y=2620).tap().perform()

self.action2.move_to(None,700,2620).tap().perform()

答案 1 :(得分:0)

通过坐标定位元素不是最佳的方法,您将无法在具有其他屏幕分辨率,方向,密度等的设备上运行相同的测试。

所以我建议考虑使用其他替代方法,例如:

  1. 确保使用Explicit Wait来确保该元素在其中
  2. 确保使用正确的automationName功能
  3. 如果元素位于WebView内-请考虑switching the context to the webview