• 自动化实战例子


    # import nnlog
    # #
    # my_log = nnlog.Logger('dashu.log',when='D',backCount=5) # 日志名称 更新方式'D'时每天 backCount:最大保存数量
    # # my_log.debug("debug level")
    # # my_log.info("info level")
    # # my_log.warning("waring level")
    # # my_log.error("error level")


    # from selenium import webdriver
    # driver = webdriver.Chrome() # 创建浏览器服务
    # # 请求目标网址
    # driver.get('http://ui.imdsx.cn/uitester/')

    # 1、发送的http请求
    # selenium 是第三方提供的包

    # selenium提提供了18种定位方式

    # 1、id
    # element = driver.find_element_by_id('i1')
    # print(element)
    # # 向input输入字符串
    # element.send_keys('1111')
    # # 2、class定位 如果重复则取所有class中第一个
    # element = driver.find_element_by_class_name('classname')
    # print(element)
    # element.send_keys('1111')
    # # 3、css selector
    # # id='i1'
    # # #i1
    # # <input id='i1'>
    # # element = driver.find_element_by_css_selector('#i1')
    # element = driver.find_element_by_css_selector('input[placeholder="请通过CSS SELECTOR定位元素"]')
    # element = driver.find_element_by_css_selector('.classname')
    # element.send_keys('1111')
    # 操作滚动条
    # js = 'window.scrollTo(0,0);'
    # driver.execute_script(js)
    # import time
    # time.sleep(2)
    # ele = driver.find_element_by_css_selector('#i1')
    # # ele.send_keys('滚动条')

    # 4、name的定位方式
    # ele = driver.find_element_by_name('name')
    # ele.send_keys('通过name定位')

    # 5、通过xpath
    # driver.find_element_by_xpath('//input[@placeholder="请通过CLASSNAME定位元素"]')

    # 6、tag name 很不常用
    # ele = driver.find_element_by_tag_name('input')
    # ele.send_keys(111)

    # 7、link_text
    # ele = driver.find_element_by_link_text('跳转大师兄博客地址')
    # ele.click()

    # 8、模糊linktext
    # ele = driver.find_element_by_partial_link_text('大师兄博客')
    # ele.click()

    # 一共18种定位方式
    # # 单数
    # 1、id
    # 2、class
    # 3、name
    # 4、css *************
    # 5、xpath *************
    # 6、linktext
    # 7、模糊linktext
    # 8、tagname
    # 复数8种 所有复数形式的定位 都会返回列表 无论列表中是一个元素 还是多个元素
    # eles = driver.find_elements_by_class_name('classname')
    # print(eles)
    # eles[0].send_keys('111')
    # 留个作业 ---自己回去把8种复数 都练习一下

    # 还有2种是上面16种的抽象方法
    # 获取当前浏览器大小

    # 下午:
    # from selenium import webdriver
    # driver = webdriver.Chrome() # 创建浏览器服务
    # # 请求目标网址
    # driver.get('http://ui.imdsx.cn/uitester/')
    #
    # # 获取浏览器的大小
    # # print(driver.get_window_size())
    # # # 最大化浏览器
    # # driver.maximize_window()
    # # 设置浏览器大小
    # # driver.set_window_size(500,500)
    # # **** 获取当前浏览器tag的指针
    # print('点击前---> %s'%driver.current_window_handle)
    #
    # # **** 获取浏览器所有的tag指针
    # print('点击前---> %s'%driver.window_handles)
    #
    # # 1、打开uitester的页面
    # # 2、打印一下 当前的指针和所有指针
    #
    # # 3、定位新建标签页面的元素 并点击
    # driver.maximize_window()
    # js = 'window.scrollTo(0,0);'
    # driver.execute_script(js)
    # import time
    # time.sleep(2)
    # driver.find_element_by_css_selector('a[href="/new-index/"]').click()
    # # 4、在打印一次当前的指针和所有指针 作对比
    # # **** 获取当前浏览器tag的指针
    # print('点击后---> %s'%driver.current_window_handle)
    #
    # # **** 获取浏览器所有的tag指针
    # print('点击后---> %s'%driver.window_handles)

    # 截图 3种截图 用as file就可以了
    # driver.get_screenshot_as_file('tupian1.png')

    # 关闭和退出
    # driver.maximize_window()
    # js = 'window.scrollTo(0,0);'
    # driver.execute_script(js)
    # import time
    # time.sleep(2)
    # driver.find_element_by_css_selector('a[href="/new-index/"]').click()
    # time.sleep(5)
    # driver.quit()

    # 退出驱动
    # driver.quit()
    # 关闭当前指针(句柄)
    # driver.close()

    # element 的操作
    # ele = driver.find_element_by_css_selector('#i1')
    # ele.send_keys('元素操作')
    # import time
    # time.sleep(2)
    # # 清除input的文案
    # ele.clear()

    # 判断元素是否可见

    # 判断元素是否勾选
    # on = driver.find_element_by_css_selector('#on')
    # off = driver.find_element_by_css_selector('#off')
    # print(on.is_selected())
    # print(off.is_selected())


    # switch ****************
    # switch windows
    from selenium import webdriver

    driver = webdriver.Chrome() # 创建浏览器服务
    # 请求目标网址
    driver.get('http://ui.imdsx.cn/uitester/')
    driver.maximize_window()
    js = 'window.scrollTo(0,0);'
    driver.execute_script(js)
    import time

    time.sleep(2)
    # driver.find_element_by_css_selector('a[href="/new-index/"]').click()
    # # 赋值handles
    # handles=driver.window_handles
    # print('点击后---> %s'%handles)
    # # 切换前打印当前的handle
    # print('切换前的handle-->: %s'%driver.current_window_handle)
    # # 切换到最新打开的页面 划横线代表当前的api调用方式已经过时
    # # driver.switch_to_window(handles[1])
    # # driver.switch_to.window(handles[1])
    # # 切换后再打印当前的handle
    # print('切换后的handle-->: %s'%driver.current_window_handle)
    # # 像新建的tab页面的元素sendkeys
    # driver.find_element_by_css_selector('#newtag').send_keys('切换tab')

    # 切换iframe ************************

    # # 先在默认打开的页面定位元素 并sendkeys
    # driver.find_element_by_css_selector('#i1').send_keys('没切换iframe')
    # # 切换iframe
    # # driver.switch_to_frame()
    # driver.switch_to.frame('top-frame')
    #
    # # 切换完iframe后 在操作frame里面的元素
    # driver.find_element_by_css_selector('#newtag').send_keys('切换后newtag的html')
    #
    # # 切换进 百度的iframe
    # driver.switch_to.frame('baidu-frame')
    #
    # # 定位百度的输入框 并操作
    # driver.find_element_by_css_selector('#kw').send_keys('水瓶座')
    #
    # # # 一次直接跳到最外层或者说是跳到默认层
    # # driver.switch_to.default_content()
    # #
    # # # 清掉id为i1的元素value
    # # driver.find_element_by_css_selector('#i1').clear()
    #
    # # 返回到当前html的上层
    # driver.switch_to.parent_frame()
    # # 清掉new的value
    # driver.find_element_by_css_selector('#newtag').clear()
    #
    # # 返回到当前html的上层
    # driver.switch_to.parent_frame()
    # # 清掉id为i1的value
    # driver.find_element_by_css_selector('#i1').clear()


    # iframe 如果没有name字段则可以 通过find 先定位iframe 在切换
    # 先在默认打开的页面定位元素 并sendkeys
    # driver.find_element_by_css_selector('#i1').send_keys('没切换iframe')
    # # 切换iframe
    # # driver.switch_to_frame()
    # # driver.switch_to.frame('top-frame')
    # iframe = driver.find_element_by_css_selector('[src="/new-index/"]')
    # driver.switch_to.frame(iframe)
    #
    # # 切换完iframe后 在操作frame里面的元素
    # driver.find_element_by_css_selector('#newtag').send_keys('切换后newtag的html')

    # alert
    # driver.find_element_by_css_selector('#alert').click()
    # confirm
    # driver.find_element_by_css_selector('#confirm').click()
    # # # 取消
    # # driver.switch_to.alert.dismiss()
    # 确认
    # driver.switch_to.alert.accept()

    # select **
    # from selenium.webdriver.support.select import Select
    # driver.maximize_window()
    # js = 'window.scrollTo(0,1800);'
    # driver.execute_script(js)
    # import time
    # time.sleep(2)
    # sele = driver.find_element_by_xpath('//select[1]')
    # print(sele)
    # Select(sele).select_by_value('4')
    # 先接收select标签
    # 在拼接option的css 定位方式
    # 在select标签中找符合条件的标签
    # 判断一下他是否被选中
    # 没选中则 在点击一次

    # 鼠标悬浮操作
    # 1、从业务角度来说 完全模拟业务
    from selenium.webdriver.common.action_chains import ActionChains
    # div = driver.find_element_by_css_selector('#a')
    # 隐藏的单击按钮
    # clickButton = driver.find_element_by_css_selector('#dis1')
    # 判断他是否可见
    # print('悬浮前:%s'%clickButton.is_displayed())
    # 每次调用一个函数 都不是立即执行,而是存到列表中 统一通过perform一起执行
    # ActionChains(driver).move_to_element(div).click(clickButton).perform()
    # print('悬浮后:%s'%div.is_displayed())
    # 2、暴力破解 直接将display none干掉
    # js = "document.getElementById('dis1').style.display='';"
    # driver.execute_script(js)
    # time.sleep(1)
    # clickButton = driver.find_element_by_css_selector('#dis1')
    # clickButton.click()

    # 拼图
    # s1 = driver.find_element_by_css_selector('#dragger')
    # t1 = driver.find_element_by_css_selector('#i1')
    # ActionChains(driver).drag_and_drop(s1,t1).perform()


    # ******************* 等待 ******************************
    # 1、time 固定等待 无论你是否出现了 他都等那么久 最傻的一种
    # import time
    # time.sleep(2)
    # 2、隐士等待 不够稳定 一般傻用这个
    # driver.implicitly_wait(10)
    # 3、显示等待 聪明人用这个
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By

    # ele = WebDriverWait(driver,10,0.2).until(EC.visibility_of_element_located((By.CSS_SELECTOR,'#i1')))
    # ele.send_keys(1111)

    m = EC.visibility_of_element_located((By.CSS_SELECTOR,'#i11'))

    res = WebDriverWait(driver,10,0.5).until(m)
    res.send_keys(1111)
  • 相关阅读:
    good excel website
    MSVCR90D.dll
    oracle db
    check socket status
    数据库数据恢复
    Nginx+Keepalived实现站点高可用[z]
    个人永久性免费-Excel催化剂功能第58波-批量生成单选复选框
    个人永久性免费-Excel催化剂功能第57波-一键生成完全组合的笛卡尔积结果表
    个人永久性免费-Excel催化剂功能第56波-获取Excel对象属性相关自定义函数
    个人永久性免费-Excel催化剂功能第55波-Excel批注相关的批量删除作者、提取所有批注信息等
  • 原文地址:https://www.cnblogs.com/wangjizhen/p/9790100.html
Copyright © 2020-2023  润新知