发布:2023/10/22 21:46:22作者:管理员 来源:本站 浏览次数:573
我们通过 appium 的 webdriver 查找控件或者操作控件的时候,如果被查找或被操作的控件不存在,就会报异常。其实很多种情况下由于网速问题,我们查找或操作的控件还没来得及出现,这时候 webdriver 的代码就会误以为控件不存在而报异常。如果我们的代码能等待一段时间就好了,就是说在一定时间内能查找到或操作到这个控件是合理的,超越我们定的时间就认为控件不存在,然后报异常。下面给你举个例子,自己写出等待的逻辑代码如下:import time
'''
功能:
securityfind 函数在规定时间查找到控件并返回该控件,否则返回 None,默认查找 30 次,每次查找后等待 1 秒。
参数说明:
driver:控制浏览器的 webdriver。
tagname:要查找的控件名称,打印出来,给用户自己自己看的。
strtag:查找语法。
flag:查找方法,比如 by_id,by_class_name 等等。
intertime:查找一次等待多久,默认 1 秒。
count:总共查找多少次,默认 30 次。
'''
def securityfind(driver, tagname, strtag, flag, intertime = 1, count = 30):
nowcount = 0
while nowcount < count:
time.sleep(intertime)
try:
if flag == "by_id":
result = driver.find_element_by_id(strtag)
elif flag == "by_name":
result = driver.find_element_by_name(strtag)
elif flag == "by_class_name":
result = driver.find_element_by_class_name(strtag)
elif flag == "by_tag_name":
result = driver.find_element_by_tag_name(strtag)
elif flag == "by_link_text":
result = driver.find_element_by_link_text(strtag)
elif flag == "by_partial_link_text":
result = driver.find_element_by_partial_link_text(strtag)
elif flag == "by_xpath":
result = driver.find_element_by_xpath(strtag)
elif flag == "by_css_selector":
result = driver.find_element_by_css_selector(strtag)
print "规定时间内找到:" + tagname
return result # 找到 tag 就返回
except:
nowcount += 1
print("没找到" + tagname + str(nowcount) + "次")
print("规定时间次数内没找到:" + tagname)
return None我们现在举例来使用上面我们自己写的查找等待函数。from selenium import webdriver
import securityfind # 导入我们自己写的函数
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
element = securityfind(driver, "百度搜索框", "kw", "by_id", 1, 10)
if element != None:
element.send_keys('selenium')
else:
print("控件不存在")
driver.quit()说明:appium 的 webdriver 用的就是 selenium 里面的 webdriver,使用语法都是一样的,具体更多使用方法你可以参考
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4