webui自动化EC模块常用

  • EC模块基本用法
  • EC常用方法--判断元素是否存在



)

EC模块基本用法

EC全称:expected_conditions(预期条件)。

Selenium的expected_conditions模块提供了一些方法,可以等待与其条件成立时再执行后续的操作。

这个模块的作用是确保代码在执行之前,等待页面或元素达到某种状态或条件。

以下是expected_conditions模块的几个常用方法及其作用:

  • presence_of_element_located: 等待指定元素出现在DOM中。
  • visibility_of_element_located: 等待指定元素可见。
  • element_to_be_clickable: 等待指定元素可以被点击。
  • text_to_be_present_in_element: 等待指定元素包含指定文本。
  • title_contains: 等待页面标题包含指定文本。
  • alert_is_present: 等待页面弹出警告框。

通过使用这些方法,可以使自动化测试更加稳定和可靠,避免因为页面加载时间过长或元素未加载完成而导致的错误和异常。

# 导入EC
from selenium.webdriver.support import expected_conditions as EC

示例代码:显示等待

def ele_walt(driver):
    """
    显示等待
    :param driver:
    :return:
    """
    wait = WebDriverWait(driver, 2)
    loc = ("id", "imgSpan")
    text = '点击上传'
    点击上传元素 = wait.until(EC.text_to_be_present_in_element(loc, text))
    if 点击上传元素:
        return True

    
    
 def 显示等待查找元素(driver,loc,timeout=10,po;;=0.5):
     return WebDriverWait(self.driver, timeout=timeout, poll_frequency=poll).until(EC.presence_of_element_located(*loc))



EC常用方法–判断元素是否存在

isEnable()isDisplayed()isSelected()1、以上三个为布尔类型的函数
2、isEnable()用于存储input、select等元素的可编辑状态,可以编辑返回true,否则返回false
3、isDisplayed()这个有点陌生,在大神写的脚本看到几次不知道何用意先不管,本身这个函数用于判断某个元素是否存在页面上(这里的存在不是肉眼看到的存在,而是html代码的存在。某些情况元素的visibility为hidden或者display属性为none,我们在页面看不到但是实际是存在页面的一些元素)
4、isSelected(),很显然,这个是判断某个元素是否被选中。例如

element=driver.find_element_by_name("XXX")

element.is_enabled() #是否可以编辑,或者按钮是否可以点击

element.is_displayed():#判断元素是否显示

element.is_selected():# 判断元素是否选中状态
driver.find_element_by_id('kw').is_displayed()   #查看元素是否可见
 
EC.presence_of_element_located((By.ID,"kw"))   #查看某个元素是否存在
 
EC.element_to_be_clickable()         #查看元素是否可点击
 
EC.element_located_to_be_selected((By.ID,"kw")) #某个预期元素是否被选中
 

    补充:
 
#frame可见并切换到该frame上
EC.frame_to_be_available_and_switch_to_it
#元素可以点击,常用于按键
EC.element_to_be_clickable
#元素出现,只要一个符合条件的元素加载出来就通过
EC.presence_of_element_located
#元素出现,须所有符合条件的元素都加载出来,这个基本上就是你爬取的最主要内容了
EC.presence_of_all_elements_located
#判断某段文本是否出现在某元素中,常用于判断输入页数与实际高亮页数是否一致
EC.text_to_be_present_in_element