0

我怎样才能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
4

1 回答 1

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 或任何你想要的。

对于安卓:

我已经编写了自己的自定义方法来查找元素 - 如果找到它将单击 else 进一步向下移动。下面代码片段中的 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”的值

于 2017-03-27T18:22:49.970 回答