• python:结合selenium写一个登录的装饰器,实现解耦


    每次写用例,有个前置条件,都会写上已登录。

    但是Web自动化,如何实现已登录的功能呢,有写成一个函数在每个用例执行前调用一次的,也有利用前置条件如:setup,__init__等方法来解决登录的,我这里决定专门写个登录的装饰器来实现登录的功能。

     代码如下:写了一个用来登录的装饰器,判断是否登录成功,登录成功就继续执行搜索商品的代码,如果没有登录成功就关闭浏览器,不执行搜索商品的代码。

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    import time


    url = "http://www.zutuan.cn/login.html#/"


    class LoginPage():

    js = "document.getElementsByClassName('a-title')[0].click()"
    loc_3 = (By.XPATH, '//input[@type="text" or @class="userName"]')
    loc_4 = (By.XPATH, '//input[@type="password"]')
    loc_5 = (By.XPATH, '//div[@class="button"]')
    loc_6 = (By.XPATH, '//div[@class="login"]') # 断言


    loc = LoginPage()


    def login(func):
    def wrapper(driver):
    driver.get(url)
    driver.maximize_window()
    driver.execute_script(loc.js) # TODO js点击元素
    driver.find_element(*loc.loc_3).send_keys("1489088761@qq.com")
    driver.find_element(*loc.loc_4).send_keys("mg123456")
    driver.find_element(*loc.loc_5).click()
    time.sleep(0.5)
    driver.refresh()
    text = driver.find_element(*loc.loc_6).text # todo 判断是否登录成功,成功返回True
    print("登录成功获取到的页面文本内容是:{}".format(text))
    if text == "您好 1489088761@qq.com [退出]":
    func(driver)
    else:
    print("登录失败")
    time.sleep(1)
    driver.quit()
    return text == "您好 1489088761@qq.com [退出]"

    return wrapper


    @login
    def search_commodity(driver):
    """搜索商品"""
    driver.find_element_by_xpath('//input[@type="text"]').send_keys("手机")
    driver.find_element_by_xpath('//div[@class="search"]').click()


    driver = webdriver.Chrome()
    res = search_commodity(driver)
    print(res)
  • 相关阅读:
    解决mac os x下 tomcat启动报 java.net.BindException: Permission denied <null>:80 错误
    Mac下MySQL卸载方法 转载
    利用JS函数制作时钟运行程序
    HTML页面弹出窗口调整代码总结
    JavaScript代码放在HTML代码不同位置的差别
    二十五种网页加速方法和seo优化技巧
    web前端之Html和Css应用中的细节问题
    利用css制作横向和纵向时间轴
    利用html5看雪花飘落的效果
    利用jQuery实现鼠标滑过整行变色
  • 原文地址:https://www.cnblogs.com/xiamaojjie/p/12658990.html
Copyright © 2020-2023  润新知