python selenium 等待元素出现,python中的等待函数
我发现太多人不使用等待。今天,边肖真的忍不住要告诉你等待的必要性。下面这篇文章主要介绍python中三个等待元素的方法。有需要的朋友可以参考一下。
00-1010前言一、强制等待二、隐式等待三、显式等待总结
目录
在进行web或app的自动化测试时,会出现找不到元素并报错的情况,往往是因为元素的原因。
在它被加载之前,被搜索的代码就已经被执行了,所以自然找不到这个元素。那我可以等。
加载元素后,查找元素的代码。
Python中有三种等待方式:
前言
睡眠(54)
此方法是通过时间模块中的时间导入睡眠导入的。
例如:
Sleep(10) #表示在执行下一个代码之前等待10s。
Driver.find_element_by_xpath("xxxxx
x”)
这种等待方法在时间到了的时候执行下一条语句,但是比较死板,不能保证元素在等待时间内真正加载。
一、强制等待
隐式等待(xxx)
这种等待意味着在执行下一步之前,页面的所有元素都在指定的时间内被加载;否则,请等到时间到期后再继续下一步。
Driver=webdriver。铬合金()
Driver.implicit _ wait (10) #等待10秒
Driver.get("XXX ")
这种方法的缺点是,你需要的元素已经加载了,但是页面还没有加载,所以你需要等待页面加载后才能执行下一步操作。
再看第三种方法,更灵活。
二、隐性等待
WebDriverWait,结合这个类的until()和until_not()方法,表示程序每x秒判断一次手指。
设置该元素是否加载,然后执行下一步,否则继续每隔x秒判断一次,并指定时间段。
停下来。如果超时,将引发异常。
从selenium导入web驱动程序
来自selenium . web driver . support . wait importWebDriverWait
来自selenium . web driver . support import expected _ conditions as EC
由导入者
定位器=(由。XPATH,"
返回布尔值
WebDriverWait(driver,10).until(EC.title_contains(u"百度一下"))
判断title,返回布尔值
WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,kw)))
判断某个元素是否被加到了dom树里,并不代表该元素一定可见,如果定位到就返回WebElement
WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.ID,su)))
判断某个元素是否被添加到了dom里并且可见,可见代表元素可显示且宽和高都大于0
WebDriverWait(driver,10).until(EC.visibility_of(driver.find_element(by=By.ID,value=kw)))
判断元素是否可见,如果可见就返回这个元素
WebDriverWait(driver,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,.mnav)))
判断是否至少有1个元素存在于dom树中,如果定位到就返回列表
WebDriverWait(driver,10).until(EC.visibility_of_any_elements_located((By.CSS_SELECTOR,.mnav)))
判断是否至少有一个元素在页面中可见,如果定位到就返回列表
WebDriverWait(driver,10).until(EC.text_to_be_present_in_element((By.XPATH,"//*[@id=u1]/a[8]"),u设置))
判断指定的元素中是否包含了预期的字符串,返回布尔值
WebDriverWait(driver,10).until(EC.text_to_be_present_in_element_value((By.CSS_SELECTOR,#su),u百度一下))
判断指定元素的属性值中是否包含了预期的字符串,返回布尔值
#WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it(locator))
判断该frame是否可以switch进去,如果可以的话,返回True并且switch进去,否则返回False
#注意这里并没有一个frame可以切换进去
WebDriverWait(driver,10).until(EC.invisibility_of_element_located((By.CSS_SELECTOR,#swfEveryCookieWrap)))
判断某个元素在是否存在于dom或不可见,如果可见返回False,不可见返回这个元素
#注意#swfEveryCookieWrap在此页面中是一个隐藏的元素
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//*[@id=u1]/a[8]"))).click()
判断某个元素中是否可见并且是enable的,代表可点击
driver.find_element_by_xpath("//*[@id=wrapper]/div[6]/a[1]").click()
#WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//*[@id=wrapper]/div[6]/a[1]"))).click()
#WebDriverWait(driver,10).until(EC.staleness_of(driver.find_element(By.ID,su)))
等待某个元素从dom树中移除
#这里没有找到合适的例子
WebDriverWait(driver,10).until(EC.element_to_be_selected(driver.find_element(By.XPATH,"//*[@id=nr]/option[1]")))
判断某个元素是否被选中了,一般用在下拉列表
WebDriverWait(driver,10).until(EC.element_selection_state_to_be(driver.find_element(By.XPATH,"//*[@id=nr]/option[1]"),True))
判断某个元素的选中状态是否符合预期
WebDriverWait(driver,10).until(EC.element_located_selection_state_to_be((By.XPATH,"//*[@id=nr]/option[1]"),True))
判断某个元素的选中状态是否符合预期
driver.find_element_by_xpath(".//*[@id=gxszButton]/a[1]").click()
instance = WebDriverWait(driver,10).until(EC.alert_is_present())
判断页面上是否存在alert,如果有就切换到alert并返回alert的内容
print instance.text
instance.accept()
driver.close()
总结
到此这篇关于python中3种等待元素出现的文章就介绍到这了,更多相关python等待元素出现内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。