Python selenium模块

Jul 30, 2015


最近写了个网页测试脚本,用到了python的selenium模块,因此作了下小结


简单示例

  • 示例

    • 对于不同类型的webdriver需要安装不同的webdriver
    
     from selenium import webdriver
     driver =webdriver.Chrome()
     driver.get('http://radar.kuaibo.com')
     print driver.title
     driver.quit()
     

元素定位

  • id:

    • browser.find_element_by_id( “kw” )
  • name

    • browser.find_element_by_name( “wd” )
  • class name

    • browser.find_element_by_class_name( “s_ipt” )
  • link text

    • 有时候不是一个输入框也不是一个按钮,而是一个文字链接,我们可以通过 link

    • browser.find_element_by_link_text(“贴 吧”).click()

  • partial link text

    • browser.find_element_by_partial_link_text(“贴”)
  • tag name

    • browser.find_element_by_tag_name( “input” )
  • xpath

    • browser.find_element_by_xpath( “//input[@id=’kw’]” )

    • browser.find_element_by_xpath(“//tr[@id=’check’]/td[2]”)

    • driver.find_element_by_xpath(“//tr[7]/td[2]”)

    • driver.find_element_by_xpath(“//div[@id=’fm’]/form/span/input”)

    • driver.find_element_by_xpath(“//a[contains(text(),’网页’)]”)

  • css selector

    • browser.find_element_by_css_selector( “#kw” )

    • browser.find_element_by_css_selector(“a[name=’tj_news’]”)

    • driver.find_element_by_css_selector(“a.RecycleBin”)


休眠

  • 普通休眠
    
     import time
     time.sleep(3)
     
  • implicitly_wait() :

    • 方法就可以方便的实现智能等待,可以在一个时间范围内智能的等待。 隐式地等待一个无素被发现或一个命令完成;这个方法每次会话只需要调用一次

    • browser.implicitly_wait(30)


元素操作

  • click:

    • 点击对象
  • send_keys:

    • 在对象上模拟按键输入
  • clear:

    • 清除对象的内容,如果可以的话,用于清除输入框的内容,比如百度输入框里默认有个“请输入关键 字”的信息,再比如我们的登陆框一般默认会有“账号”“密码”这样的默认信息
  • submit:

    • 清除对象的内容,如果可以的话

键盘&鼠标事件

  • 键盘组合事件:

    • .send_keys(Keys.CONTROL,’a’)

    • 相当于ctrl+a

  • 上传文件:

    • send_keys(‘D:\selenium_use_case\upload_file.txt’)
  • 右击:

    • ActionChains(driver).context_click(qqq).perform()
  • 双击:

    • ActionChains(driver).double_click(qqq).perform()
  • 移动:

    • ActionChains(driver).drag_and_drop(element, target).perform()

框架/窗口定位

  • browser.switch_to_frame(“f1”) 跳到指定frame

  • driver.switch_to_window(“windowName”) 跳到指定window

  • driver.switch_to_alert().accept() 跳到弹出框并点击确定


js

  • 执行 js 一般有两种, 一种是在页面上直接执行 JS, 另一种是在某个已经定位的元素上执行 JS

  • 第一种:driver.execute_script(‘$(“#tooltip”).fadeOut();’)

  • 第二种:

    
     button = driver.find_element_by_class_name('btn')
     driver.execute_script('$(arguments[0]).fadeOut()',button)