如何使用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
答案 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'的值根据您的屏幕尺寸