如何使用appium在listview中查找不可见的元素.driver.scroll_findElement_byname?

时间:2017-03-22 06:49:14

标签: python-appium

如何使用appium查找列表视图中不可见的元素(可能元素位于底部,我需要滚动许多页面才能找到元素)

我使用了driver.scroll_find_element_by_name(),但是我收到了错误。

  

Appium:info:[debug]在60秒内没有得到新命令,关闭   下来...

我的代码如下:

 def scroll_find_element_by_name(self, element_name, time_wait=0.5):
    '''
    @param:
    @rtn: True/False,
    @usage:
    '''
    #
    width,height=self.getScreenResolution()
    for i in range(maxScrollTimes):
        #
        try:
            self.assertRaises(NoSuchElementException, self.driver.find_element_by_name, element_name)
            print "Scroll down " + str(i+1) + ' time to find ' + element_name
        except:
            print 'SUCCESS: ' + element_name + ' found'
            return True

        self.driver.swipe(width / 2, 5 * height / 8, width / 2, 3 * height / 8, 1500)#
        sleep(time_wait)
    print 'UNSUCCESS: ' + element_name + 'NOT found'
    return False

1 个答案:

答案 0 :(得分:0)

适用于iOS:

el = self.driver.find_element_by_xpath('xpath_value')
self.driver.execute_script('mobile: scroll', {"element": el, "toVisible": True})

修改' find_element_by_xpath' id或者你想要的任何东西。

适用于Android:

我已经编写了自己的自定义方法来查找元素 - 如果找到它会单击,否则向下移动。下面的代码片段中的get_element是我自己的自定义方法之一,您应该将其更改为find_elemeny_by_xpath / id等。修改它以满足您的需求。

    def android_is_visible(self, locator):
    for _ in xrange(15):
        end_y = 950
        try:
            value = self.get_element(locator).is_displayed()
            if value is True:
                break
        except NoSuchElementException:
            self.driver.swipe(470, 1400, 470, end_y, 400)
            #self.driver.swipe(start_x, start_y, end_x, end_y, duration=400)
            self.driver.implicitly_wait(2)
            continue

同时更改' end_y = 950'的值根据您的屏幕尺寸