zoukankan      html  css  js  c++  java
  • 【webdriver自动化】将163登录邮箱的操作封装成多个方法去执行

    login_info.txt:
    youxiang_99@163.com,XXXX
    youxiang_100@163.com,XXXX
    
    main.py:
    #注意:编码格式
    #算法:
    (1)定义多个方法,分别执行不同的操作
    (2)拼接一个长的字符串,方法和参数用逗号(,)隔开,每个方法之间用回车键“
    ”隔开
    (3)将长字符串切割成这样的格式“方法名,参数”,strip().split("
    ")
    (4)用split(",")判断参数长度,例如“sleep,5”参数长度len(step)==2,拼接成command,用类似“sleep(5)”,这里最好用command="%s(%s)"%(step[0],step[1])这样的方式,不容易拼接错误
    (5)用eval函数执行command
    from selenium import webdriver
    import time
    import chardet
    
    driver=""
    def open_browser():
        global driver
        driver=webdriver.Ie(executable_path="c:\IEDriverServer")
    
    def visit_url(url):
        global driver
        driver.get(url)
    
    def switch_to_frame(frame_xpath_expression):
        global driver
        time.sleep(3)
        frame=driver.find_element_by_xpath(frame_xpath_expression)
        driver.switch_to.frame(frame)
    
    def input(element_xpath_expression,content):
        global driver
        element=driver.find_element_by_xpath(element_xpath_expression)
        element.clear()
        element.send_keys(content)
    
    def click(element_xpath_expression):
        global driver
        element=driver.find_element_by_xpath(element_xpath_expression)
        element.click()
    
    def assert_str_in_page_source(s):
        global driver
        assert s in driver.page_source
    
    def get_out_of_frame():
        driver.switch_to_default_content()
    
    def sleep_time(seconds):
        time.sleep(float(seconds))
    
    def close():
        global driver
        driver.quit()
    
    with open("c:\login_info.txt") as f:
        for data in f:
            username_data,pwd_data=data.strip().split(",")
            steps="""open_browser
    visit_url,http://mail.163.com
    switch_to_frame,//iframe[@id='x-URS-iframe']
    input,//input[@placeholder='邮箱帐号或手机号' and @name='email'],%s
    input,//input[@placeholder='密码'],%s
    click,//a[@id='dologin']
    sleep_time,5
    get_out_of_frame
    assert_str_in_page_source,退出
    close""" %(username_data,pwd_data)
    
            steps=steps.split("
    ")
            print steps
            command=""
            for step in steps:
                step=step.split(",")
                if len(step)==1:
                    command="%s()"%(step[0])
                elif len(step)==2:
                    command="%s(u'%s')"%(step[0],step[1].decode("utf-8"))
                elif len(step)==3:
                    command="%s('%s',u'%s')"%(step[0],step[1],step[2])
                print "command:",command
                eval(command)
  • 相关阅读:
    sublime生成html快捷标签布局
    vue.js选项卡动态组件
    textarea内容限制字数
    60s验证等待
    vue.js显示隐藏
    CSS强制性换行
    Ultra Pull To Refresh下拉刷新
    Open经验库网址
    Fresco实例
    解决LinearLayout中控件不能居右对齐
  • 原文地址:https://www.cnblogs.com/jingsheng99/p/9231835.html
Copyright © 2011-2022 走看看