设为首页 收藏本站
查看: 1455|回复: 0

[经验分享] Python-selenium基础操作

[复制链接]

尚未签到

发表于 2018-8-9 06:22:34 | 显示全部楼层 |阅读模式
  一. selinum优势
  页面级测试,模拟用户真实操作
  强大library,支持页面元素各类操作
  多浏览器支持(chrome,firefox,ie)
  多语言支持(python,java,C#,php,ruby)
  二. 需要安装软件

  •   firefox
      firebug
      seleniumIDE
  •   chrome
      chromedirver
  •   ie
      iedriverserver
  •   python2.7
      selenium lib
  详细安装步骤即所需软件包参见:http://down.51cto.com/data/2090092

  三. Selenium>
  对于初学者,可以先使用selenium>  特点:工作为firefox插件,支持case录制、回放及代码导出
  四. selenium入门
  1.三种常用浏览器的启动方式
  from selenium import webdriver
  driver=webdriver.Chrome()
  driver=webdirver.Firefox()
  driver=webdriver.Ie()
  2.关闭操作
  driver.close()
  关闭当前窗口
  driver.quit()
  关闭浏览器
  3.selenium常用api
  driver.current_url
  driver.title
  driver.page_source 源码
  driver.name
  driver.current_window_handle 当前窗口的句柄
  4.跳转操作
  driver.get("http://www.baidu.com")
  driver.forward()
  driver.back()
  driver.refresh()
  直到页面加载完全继续执行后面的程序,不等待ajax操作
  配合time.sleep()方法使用
  示例一:
#打开3个窗口,通过switch_to_window切换关闭窗口  
from selenium import webdriver
  
driver=webdriver.Chrome()
  
driver.get("http://www.baidu.com/")
  
print driver.window_handles
  
driver.switch_to_window(driver.window_handles[1])
  
driver.close()
  实例二:
#打开百度首页,输入搜索内容并进行光标移动后回车  
from selenium import webdriver
  
driver=webdriver.Chrome()
  
driver.maximize.window() #窗口最大化
  
driver.get("http://www.baidu.com/")
  
element=driver.find_element_by_id('kw')
  
element.clear()
  
element.send_keys('抗战胜利70周年'.decode('gbk'))
  
element.send_keys(Keys.ARROW_DOWN) #光标向下
  
element.send_keys(Keys.ENTER) #回车
  5.常用元素操作
  element.get_attribute('class')
  element.is_displayed()
  element.is_enabled()
  是否可点击可输入等
  element.is_selected()
  element.location
  坐标
  element.parent
  上一级
  element.size
  长宽
  element.tag_name
  返回标签名
  element.text
  返回文本
  6.页面交互select操作
  from selenium.webdriver.support.ui import Select
  select=Select(driver.find_element_by_name('name'))
  select.select_by_index(index)
  select.select_by_visible_text("text")
  select.select_by_value(value)
  select.deselect_all()
  select.options
  select.all_selected_options
  示例三:
DSC0000.jpg

  如上代码处理下拉框元素
  方法一:
from selenium import webdriver  
driver=webdriver.Chrome()
  
driver.get('http://localhost/test.html')
  
element=driver.find_element_by_id('lang')
  
options=element.find_elements_by_tag_name('option')
  
for i in options:
  
print i.get_attribute('value')
  
for i in options:
  
print i.get_attribute('text')
  方法二:
from selenium import webdriver  
from selenium.webdriver.support.ui import Select
  
driver=webdriver.Chrome()
  
Select(driver.find_element_by_id('lang')).select_by_visible_text('简体'.decode('gbk'))
  7.页面交互keys操作
  from selenium.webdriver.common.keys import Keys
  ALT
  ARROW_DOWN /LEFT/RIGHT/UP
  BACKSPACE
  CONTROL
  ENTER
  ESCAPE
  F1 /2/3/4/5...
  SHIFT
  APACE
  TAB
  8.页面交互wait操作--implicit wait
  driver.implicitly_wait(10)
  进行find操作时,等待固定秒数,成功退出计时
  9.页面交互wait操作--explicit wait
  按照一定条件执行wait操作
  from selenium.webdriver.support.ui import WebDriverWait
  from selenium.webdriver.support import expected_conditions
  from selenium.webdriver.common.by import By
  element=WebDriverWait(driver,1).until(expected_conditions.presence_of_elemrnt_located(By.ID,"idx"))
  条件列表如下:
  title_is
  title_contains
  presence_of_element_located
  visibility_of_element_located
  visibility_of
  presence_of_all_elements_located
  text_to_be_present_in_element
  text_to_be_present_in_element_value
  frame_to_be_available_and_switch_to_it
  invisibility_of_element_located
  element_to_be_clickable
  staleness_of
  element_to_be_selected
  element_located_to_be_selected
  element_selection_state_to_be
  element_located_selection_state_to_be
  alert_is_present
  10.cookie操作
  driver.get_cookies()
  cookie={'name':'zz','value':18}
  driver.add_cookie(cookie)
  driver.get_cookie('zz')
  driver.delete_cookie('zz')
  11.js操作
  js='alert("hello")'
  driver.execute_script(js)
  js='console.log("hello")'
  driver.excute_script(js)
  五. selenium元素定位方法
  1.定位单元素
  find_element_by_id
  find_element_by_name
  find_element_by_xpath
  find_element_by_link_text
  find_element_by_partial_link_text
  find_element_by_tag_name
  find_element_by_class_name
  find_element_by_css_selecror
  2.定位多元素
  find_elements_by_name
  find_elements_by_xpath
  find_elements_by_link_text
  find_elements_by_partial_link_text
  find_elements_by_tag_name
  find_elements_by_class_name
  find_elements_by_css_selecror
  3.通用方法
  from selenium.webdriver.common.by import By
  driver.find_element(By.XPATH,'//button[text()="some text"]')
  driver.find_elements(By.XPATH,'//button')

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-548789-1-1.html 上篇帖子: python 安装easy_install和pip 下篇帖子: Python --013--面向对象
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表