Python+selenium自动化之29----EC模块之element_located_selection_state_to_be

上一篇介绍selenium中一个模块expected_conditions判断文本是否存在的方法text_to_be_present_in_element。如果有多个选择框需要验证是否被勾选或取消勾选,就需要用到本篇文章介绍的方法element_located_selection_state_to_be。

实例还是结合腾讯企业邮箱的使用。

源码element_located_selection_state_to_be

class element_located_selection_state_to_be(object):

    """ An expectation to locate an element and check if the selection state

    specified is in that state.

    locator is a tuple of (by, path)

    is_selected is a boolean

    """

    def __init__(self, locator, is_selected):

        self.locator = locator

        self.is_selected = is_selected



    def __call__(self, driver):

        try:

            element = _find_element(driver, self.locator)

            return element.is_selected() == self.is_selected

        except StaleElementReferenceException:

            return False

locator:定位器

is_selected:选择状态,bool值,传入一个期望是否被选中,如果期望值与实际状态一致则返回True,不一致则返回False。

判断选中状态

首先登陆邮箱,要用自己的邮箱哦;

选择账户密码登陆;

点击首页的【设置】,进入到设置页,默认为常规设置页

判定文字大小的选择状态是否一致

Python+selenium自动化之29----EC模块之element_located_selection_state_to_be

可以结合测试场景,判定是否被选中,进行选择或取消操作,以及判定操作后的状态。

 

# -*- coding: UTF-8 -*-

from selenium import webdriver

from selenium.webdriver.support import expected_conditions as EC

import time



driver = webdriver.Firefox()

driver.implicitly_wait(20)

user = "[email protected]"

pwd = "123"

# 打开腾讯企业邮箱

driver.get("https://exmail.qq.com/login")

# 点击 账号密码登陆

driver.find_element_by_class_name("js_show_pwd_panel").click()

# 输入 账户

driver.find_element_by_id("inputuin").send_keys(user)

# 输入 密码

driver.find_element_by_id("pp").send_keys(pwd)

# 点击  登录

driver.find_element_by_id('btlogin').click()

# 点击  设置

driver.find_element_by_link_text("设置").click()

time.sleep(3)

# 进入 iframe

driver.switch_to.frame("mainFrame")

loc = ("id","viewsetting2")

text = 1

emailtext = EC.element_located_selection_state_to_be(loc,text)(driver)

print(emailtext)

if emailtext:

   print("已选择!")

else:

   print("未选择!")

driver.quit()

Python+selenium自动化之29----EC模块之element_located_selection_state_to_be