『心善渊』Selenium3.0基础 — 31.Selenium

2020-09-10  本文已影响0人  繁华似锦Fighting

3、expected_conditions模块独立使用

我们练习expected_conditions模块中两个功能,其他功能参照即可。

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

# 2.打开Chrome浏览器
driver = webdriver.Chrome()

# 3.打开注册A页面
url = "https://www.baidu.com"
driver.get(url)
sleep(3)

# 4.EC模块的使用
"""
1.EC模块单独使用的语法
    EC.方法(参数)(driver) 或 EC.方法(参数).__call__(driver)
2.说明   
    我们可以查看title_is()源码
    class title_is(object):
        def __init__(self, title):
            self.title = title
        
        def __call__(self, driver):
            return self.title == driver.title
    我们可以看到,直接使用EC模块,就需要调用__call__()方法
    而__call__()方法是魔法方法,调用方式,就是上面1所说的两种方式。
"""

# 4.1 EC模块中title_is()的使用
# 判断网页title是否是特定文本
# 正确匹配
title_is_result_True = EC.title_is("百度一下,你就知道")(driver)
print("title_is结果 =", title_is_result_True)
# 错误匹配
title_is_result_False = EC.title_is("百度一下,你就知道1").__call__(driver)
print(f"title_is结果 = {title_is_result_False}")

# 4.2 EC模块中presence_of_element_located(locator)的使用
# presence_of_all_elements_located(locator)同理
# 定位元素单数
# 定位百度首页输入框
# 4.2.1编写locator(定位器)
# 正确定位
input_locator_True = ("id", "kw")
# 错误定位
input_locator_False = ("id", "kw1")

# 4.2.2 执行EC模块方法
element_located_True = EC.presence_of_element_located(input_locator_True).__call__(driver)
print("element_located结果 =", element_located_True)
# 定位不到会报错
# element_located_False = EC.presence_of_element_located(input_locator_False)(driver)


# 5.关闭浏览器
sleep(2)
driver.quit()

4、expected_conditions模块综合使用

WebDriverWait类和until()方法和EC模块这种组合的使用方法练习。

(1)title_is(title)示例

这个title_is(title)例子很简单,作为一个入门示例。

"""
1.学习目标
    掌握EC模块中title_is的使用
2.操作步骤(语法)
    2.1 EC模块通用使用方法
        EC模块通常和WebDriverWait配合使用
        WebDriverWait(driver,timeout).until(EC.方法)
    2.2 title_is(指定的标题)
        判断页面标题是否和指定的标题一致,如果一致返回True,不一致返回Palse
        result=WebDriverWait(driver,timeout).until(EC.title_is(指定的标题))
        print(result)
3.需求
    使用title_is判断百度首页的标题title
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

# 2.打开谷歌浏览器
driver = webdriver.Chrome()

# 3.输入网址
url = "https://www.baidu.com"
driver.get(url)
sleep(3)

# 4.验证页面标题
result = WebDriverWait(driver, 5).until(EC.title_is("百度一下,你就知道"))
print("result =", result)

# 5.关闭浏览器
sleep(2)
driver.quit()
"""
输出结果:
result = True
"""

(2)presence_of_element_located(locator)示例(常用)

这两个方法比较常用:

presence_of_element_located(locator)为例:

"""
1.学习目标:
    必须掌握EC模块中元素定位方法presence_of_element_located(locator)
2.语法
    2.1 presence_of_element_located(locator) 单个元素定位
    2.2 presence_of_all_elements_located(locator)  定位一组元素,复数形式
        其实是将find_element()方法做二次封装
        find_element_by_id("id属性值")
    2.3 locator--定位器是一个数据类型元组
            ("元素定位方式","方式对应的值")
            ("id","id属性值")
            ("class name","class属性值")
            ("xpath","xpath表达式")
            ("partial link text","连接部分文本")
            ("name","name属性值")
        具体可以看selenium.webdriver.common.by.By这个类
        第一个参数可写形式
            By.ID = "id",也就是(By.ID ,"id属性值")
            By.XPATH = "xpath", (By.XPATH,"xpath表达式")
    2.3 总结:
        EC模块中的方法一般和显示等待配合使用
        EC模块使用步骤:
            1.编写定位器locator
            2.配合webdriverWait一起使用

3.需求
    使用EC模块中元素定位方法presence_of_element_located(locator)
    定位百度首页搜索框
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

# 2.打开Chrome浏览器
driver = webdriver.Chrome()

# 3.打开页面
url = "https://www.baidu.com"
driver.get(url)
sleep(3)

# 4.EC模块的使用
# 4.1 定位单个元素
# 4.1.1 编写locator(定位器)
# 定位百度首页输入框
input_locator = ("id", "kw")
# 定位百度首页"百度一下"
button_loator = ("id", "su")

# 4.1.2 定位元素
# 结合显式等待和EC模块实现元素定位
bd_input = WebDriverWait(driver, 5).until(EC.presence_of_element_located(input_locator))
bd_button = WebDriverWait(driver, 5).until(EC.presence_of_element_located(button_loator))

# 5.操作元素
bd_input.send_keys("【心善渊&Selenium3.0基础】")
sleep(2)
bd_button.click()

# 6.关闭浏览器
sleep(5)
driver.quit()
上一篇下一篇

猜你喜欢

热点阅读