美文网首页
『心善渊』Selenium3.0基础 — 31.Selenium

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

作者: 繁华似锦Fighting | 来源:发表于2020-09-10 12:08 被阅读0次

    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): 单个元素定位
    • presence_of_all_elements_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()
    

    相关文章

      网友评论

          本文标题:『心善渊』Selenium3.0基础 — 31.Selenium

          本文链接:https://www.haomeiwen.com/subject/mnelektx.html