359025439 发表于 2015-12-3 12:25:47

【Selenium2+Python】常用操作

  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')
  for checkbox in checkboxes:
  checkbox.click()
  #把最后一个checkbox的勾去掉    pop()为空则是最后一个
  driver.find_elements_by_css_selector('input').pop().click()
  
页: [1]
查看完整版本: 【Selenium2+Python】常用操作