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

[经验分享] 【Selenium2+Python】常用操作

[复制链接]

尚未签到

发表于 2015-12-3 12:25:47 | 显示全部楼层 |阅读模式
  Webdriver中比较常用的操作元素的方法:
  clear()    清除输入框的默认内容
  send_keys("xxx")    在一个输入框里输入xx内容
  ——如果输入中文,则需要在脚本开头声明编码为utf-8,然后在中文字符前面加u(如:send_keys(u"中文内容"))
  click()    点击一个按钮
  submit()    提交表单
  
  WebElement接口常用方法:
  size    返回元素的尺寸
  ——如:size = driver.find_element_by_id("id").size
  text    获取元素的文本
  ——如:text = driver.find_element_by_id("id").text
  get_attribute(name)    获得属性值
  ——如:attribute = driver.find_element_by_id("id").get_attribute('type')
  is_displayed()    设置该元素是否用户可见
  ——如:isshow = driver.find_element_by_id("id").is_displayed()
  
  ActionChains类鼠标操作的常用方法:
  引入ActionChains类:from selenium.webdriver.common.action_chains import ActionChains
  context_click()    右击
  ——如:RightClick = driver.find_element_by_id("id")
  ActionChains(driver).context_click(RightClick).perform()
  double_click()    双击
  ——如:DoubleClick = driver.find_element_by_name("name")
  ActionChains(driver).double_click(DoubleClick).perform()
  drag_and_drop(source, target)    鼠标拖放
  ——source:鼠标按下的源元素;target:鼠标释放的目标元素
  ——如:element = driver.find_element_by_name("name")
  target = driver.find_element_by_name("name")
  ActionChains(driver).drag_and_drop(element, target).perform()
  move_to_element()    鼠标悬停在一个元素上
  ——如:above = driver.find_element_by_xpath("xpath路径")
             ActionChains(driver).move_to_element(above).perform()
  click_and_hold()    按下鼠标左键在一个元素上
  ——如:left = driver.find_element_by_name("name")
  ActionChains(driver).click_and_hold(left).perform()
  
  键盘事件:
  引入Keys类包:from selenium.webdriver.common.keys import Keys
  send_keys()    输入框输入内容
  ——如:driver.find_element_by_id("id").send_keys("XXX")
  send_keys(Keys.BACK_SPACE)    向左删除一个字符                                              ——如:driver.find_element_by_id("id").send_keys("XXX")
  send_keys(Keys.SPACE)    输入空格
  ——如:driver.find_element_by_id("id").send_keys(Keys.SPACE)
  send_keys(Keys.CONTROL,'a')    ctrl+a 全选输入框的内容
  ——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,'a')
  send_keys(Keys.CONTROL,'x')    ctrl+x 剪切输入框的内容
  ——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,'x')
  send_keys(Keys.CONTROL,'v')    ctrl+v 粘贴到输入框
  ——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,'v')
  send_keys(Keys.ENTER)    回车代替点击
  ——如:driver.find_element_by_id("id").send_keys(Keys.ENTER)
  send_keys(Keys.TAB)    制表键(Tab)
  ——如:driver.find_element_by_id("id").send_keys(Keys.TAB)
  send_keys(Keys.ESCAPE)    回退键(Esc)
  ——如:driver.find_element_by_id("id").send_keys(Keys.ESCAPE)
  send_keys(Keys.CONTROL,'c')    复制
  ——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,'c')  
  
  打印信息
  #获得title并打印
  title = driver.title
  print title
  #拿当前title名称进行预期比较
  if title == u"百度一下,你就知道":
  print "title yes!"
  else:
  print "title no!"
  #获得当前URL并打印
  url = driver.current_url
  print url
  
  等待时间
  #导入 WebDriverWait 包
from selenium.webdriver.support.ui import WebDriverWait
#导入 time 包
import time
  sleep()    设置固定等待时间
  ——如:time.sleep(5)  #等待5秒
  implicitly_wait()    等待一个元素被发现,或一个命令完成,超出了设置时间则抛出异常
  ——如:driver.implicitly_wait(30)
  driver.find_element_by_id("id").click()
  WebDriverWait()    在设置时间内,默认每隔一段时间检测检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常
  WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
  ——driver:WebDriver 的驱动程序(Ie, Firefox, Chrome 或远程)
  ——timeout:最长超时时间,默认以秒为单位
  ——poll_frequency:休眠时间的间隔(步长)时间,默认为 0.5 秒
  ——ignored_exceptions:超时后的异常信息,默认情况下抛 NoSuchElementException 异常
  ——如1:element = WebDriverWait(driver, 10).until(lambda x : x.find_element_by_id("id"))
  element.send_keys("selenium")
  ——如2:element = WebDriverWait(driver, 10).until(lambda x: x.find_element_by_id(“Id”))
              is_disappeared = WebDriverWait(driver, 30, 1, (ElementNotVisibleException)).until_not(lambda x: x.find_element_by_id(“someId”).is_displayed())
  WebDriverWai()一般由 unit()或 until_not()方法配合使用:
  ——until(method, message=’’)
      调用该方法提供的驱动程序作为一个参数,直到返回值不为 False。
——until_not(method, message=’’)
      调用该方法提供的驱动程序作为一个参数,直到返回值为 False。
  
  定位一组对象
  #选择当前页面上所有tag name为input的元素
  inputs = driver.find_elements_by_tag_name('input')
  #从中过滤出type为checkbox的元素,并勾选上
  for input in inputs:
  if input.get_attribute('type') == 'checkbox':
  input.click()
  #使用CSS定位选择所有type为checkbox的元素,并勾选上
  checkboxes = driver.find_elements_by_css_selector('input[type=checkbox]')
  for checkbox in checkboxes:
  checkbox.click()
  #把最后一个checkbox的勾去掉    pop()为空则是最后一个
  driver.find_elements_by_css_selector('input[type=checkbox]').pop().click()
  

运维网声明 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-146792-1-1.html 上篇帖子: Python绘制PDF文件~超简单的小程序 下篇帖子: python---解决“Unable to find vcvarsall.bat”错误
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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