通过expected_conditions判断网页元素是否存在

expected_conditions模块:

  • 是Selenium的一个子模块,selenium.webdriver.support.expected_conditions

  • 可以对网页上元素是否存在进行判断,一般用于断言或与WebDriverWait配合使用

     1 import time
     2 from selenium import webdriver
     3 from selenium.webdriver.support.wait import WebDriverWait
     4 from selenium.webdriver.support import expected_conditions as EC
     5 from selenium.webdriver.common.by import By
     6 
     7 
     8 class Expected_Conditions:
     9     # expected_conditions模块用法汇总
    10     def __init__(self):
    11         self.driver = webdriver.Chrome()
    12         self.driver.get("https://www.baidu.com")
    13         self.driver.maximize_window()
    14         time.sleep(2)
    15         # 判断当前页面的title
    16         WebDriverWait(self.driver, 2).until(EC.title_is("百度一下,你就知道"))
    17         # 判断定位元素
    18         element = WebDriverWait(self.driver, 2).until(EC.visibility_of(self.driver.find_element(By.ID, 'kw')))
    19         element.send_keys('中彦引擎')
    20         time.sleep(2)
    21 
    22         # 判断当前页面的title是否包含预期字符串,返回布尔值
    23         WebDriverWait(self.driver, 10).until(EC.title_contains('new'))
    24 
    25         # 判断当前页面的url是否精确等于预期,返回布尔值
    26         WebDriverWait(self.driver, 10).until(EC.url_contains('https://www.baidu.com'))
    27 
    28         # 判断当前页面的url是否包含预期字符串,返回布尔值
    29         WebDriverWait(self.driver, 10).until(EC.url_contains('baidu'))
    30 
    31         # 判断当前页面的url是否满足字符串正则表达式匹配,返回布尔值
    32         WebDriverWait(self.driver, 10).until(EC.url_matches('.+baidu.+'))
    33 
    34         # 判断元素是否出现,只要有一个元素出现,返回元素对象
    35         WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.ID, 'kw')))
    36 
    37         # 判断元素是否可见,返回元素对象
    38         WebDriverWait(self.driver, 10).until(EC.visibility_of(self.driver.find_element(By.ID, 'kw')))
    39 
    40         # 判断元素是否包含指定文本,返回布尔值
    41         WebDriverWait(self.driver, 10).until(EC.text_to_be_present_in_element((By.NAME, 'tj_trnews'), '新闻'))
    42 
    43         # 判断该是否可以switch进去,如果可以的话,返回True并且switch进去
    44         WebDriverWait(self.driver, 10, ).until(EC.frame_to_be_available_and_switch_to_it(By.XPATH, '// '))
    45 
    46         # 判断某个元素是否可见并且是可点击的,如果是的就返回这个元素,否则返回
    47         WebDriverWait(self.driver, 10).until(EC.element_to_be_clickable((By.NAME, 'tj_trnews')))
    48 
    49         # 判断某个元素是否被选中,一般用在下拉列表
    50         WebDriverWait(self.driver, 10).until(
    51             EC.element_to_be_selected(self.driver.find_element(By.XPATH, '//input[@type="checkbox"]')))
    52 
    53         # 判断页面上是否存在
    54         WebDriverWait(self.driver, 10).until(EC.alert_is_present())
    55 
    56         self.driver.quit()
    57 
    58 
    59 if __name__ == "__main__":
    60     Expected_Conditions()

     

上一篇:ZABBIX实现微信告警


下一篇:name* until