博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自动化实战笔记
阅读量:4538 次
发布时间:2019-06-08

本文共 7534 字,大约阅读时间需要 25 分钟。

# 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 # #  # # 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)

转载于:https://www.cnblogs.com/xuzhongtao/p/9614327.html

你可能感兴趣的文章
java实验二——输出一个指定整数的所有质因数
查看>>
4104:单词翻转
查看>>
VS2012 下编译可以在 XP 上运行的条件
查看>>
android中xml设置Animation动画效果详解
查看>>
HDU 5416——CRB and Tree——————【DFS搜树】
查看>>
mysql事务及慢查询
查看>>
Erlang调度器细节探析
查看>>
转,SelectNodes + XPath
查看>>
数据库的简单操作
查看>>
java 输入
查看>>
【Windows】Windows中解析DOS的for命令使用
查看>>
MVC3: 页面向服务传参(view->controller,get,post)
查看>>
vs2008 卡一下的问题
查看>>
Windows Socket五种I/O模型——代码全攻略
查看>>
多线程相关
查看>>
处理并解决mysql8.0 caching-sha2-password问题
查看>>
JavaScript 之 对象/JSON/数组
查看>>
判断delegate是否释放
查看>>
实验八
查看>>
时间日期函数
查看>>