zoukankan      html  css  js  c++  java
  • Python+Selenium(webdriver常用API)

    总结了Python+selenium常用的一些方法函数,以后有新增再随时更新:

    1. 加载浏览器驱动: webdriver.Firefox()

    2. 打开页面:get()

    3. 关闭浏览器:quit()

    4. 最大化窗口: maximize_window()

    5. 设置窗口参数:set_window_size(600,800)

    6. 后退到前一页: back()

    7. 前进到后一页: forward()

    8. 刷新页面: refresh()

    9. 获得title并打印

        • # coding:utf-8
          from selenium import webdriver
          title = driver.title
          print title
          #拿当前title名称进行预期比较
          if title == u"百度一下,你就知道":
            print "title yes!"
          else:
          print "title no!"
          
          #获得当前URL并打印
          url = driver.current_url
          print url
    10. 元素定位:

      • id定位:find_element_by_id()
      • name定位:find_element_by_name()
      • class定位:find_element_by_class()
      • tag定位:find_element_by_tag_name()
      • link定位:find_element_by_link_text()
      • partial link 定位: find_element_by_partial_link_text()
      • Xpath定位:
      1. 绝对路径:find_element_by_xpath("绝对路径")
      2. 元素属性:find_element_by_xpath("//unput[@id='kw']")
      3. 层级与属性结合:find_element_by_xpath("//form[@id='loginForm']/ul/input[1]")
      4. 逻辑运算符:find_element_by_xpath("//input[@id='kw' and@class='s_ipt']")
      • CSS定位:find_element_by_css_selector()

    选择器

    例子

    描述

    .class

    .intro

    Class选择器,选择class=“intro”的所有元素

    #id

    #firstname

    Id选择器,选择id=“firstname”的所有元素

    *

    *

    选择所有元素

    Element

    P

    元素所有<p>元素

    Element>element

    div>input

    选择父元素为<div>元素之后的所有<input>元素

    Element+element

    Div+input

    选择同一级中紧接在<div>元素之后的所有<input>元素

    [attribute=value]

    [target=_blank]

    选择target=”_blank”的所有元素

    10.清除文本:clear()

    11.模拟按键输入:send_keys(*value)

    12.单击元素:click()

    13.提交表单(相当于"回车"):submit()

    14.鼠标事件:

    ActionChains 类提供了鼠标操作的常用方法:

    引入ActionChains类:from selenium.webdriver.common.action_chains import ActionChains

    • perform():执行所有ActionsChains中存储的行为

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

    Python代码:

    复制代码
    # 引入ActionChains类
    from selenium.webdriver.common.action_chains import ActionChains
    # ......
    # 定位到要右击的元素
    element=driver.find_element_by_css_selector("#kw")
    #右击操作
    ActionChains(driver).context_click(element).perform()
    # ......
    复制代码

    15.键盘事件:

    send_keys(Keys.BACK_SPACE)

    删除键(BackSpace)

    send_keys(Keys.SPACE)

    空格键(Space)

    send_keys(Keys.TAB)

    制表键(Tab)

    send_keys(Keys.ESCAPE)

    回退键(Esc)

    send_keys(Keys.eNTER)

    回车键(Enter)

    send_keys(Keys.CONTROL,'a')

    全选(Ctrl+A)

    send_keys(Keys.CONTROL,'c')

    复制(Ctrl+C)

    send_keys(Keys.CONTROL,'x')

    剪切(Ctrl+X)

    send_keys(Keys.CONTROL,'v')

    粘贴(Ctrl+(Ctrl+A))

    send_keys(Keys.F1)

    键盘F1

    ……

     

    send_keys(Keys.F12)

    键盘F12

    Python代码:

    # 引入Key模块
    from selenium.webdriver.common.keys import Keys
    # ......
    # ctrl+a全选输入框内容
    driver.find_element_by_css_selector("#kw").send_keys(Keys.CONTROL,'a')
    # ......

    16.元素等待:

    (1)显示等待

    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    # ......
    element=WebDriverWait(driver,5,0.5).until(EC.presence_of_element_located((By.ID,'kw')))
    # ......

    (2)隐式等待

    from selenium.common.exceptions import NoSuchElementException
    # ......
    drive.implicitly_wait(10)
    # ......

    17.定位一组元素:

      • find_elements_by_id()
      • find_elements_by_name()
      • find_elements_by_class()
      • find_elements_by_tag_name()
      • find_elements_by_link_text()
      • find_elements_by_partial_link_text()
      • find_elements_by_xpath()
      • find_elements_by_css_selector()
    复制代码
    # 通过tag name定位元素:driver.find_elements_by_tag_name('option')[1].click()
    # 通过xpath定位元素:
    driver.find_elements_by_xpath("//input[@type='checkbox']")
    # 通过css定位元素:
    driver.find_elements_by_css_selector('input[type=checkbox]')
    # 使用selector:
    slector=Select(driver.find_element_by_css_selector("[name='CookieDate']"))
    slector.select_by_index(1)
    # slector.select_by_visible_text("留一年")
    # slector.select_by_value("1")
    复制代码

    18.多表单切换:switch_to.frame()

    19.多窗口切换:switch_to.window()

    当前句柄:current_window_handle

    所有句柄:window_handles

    20.警告框处理:switch_to_alert()

      • text:返回所有alert/confirm/prompt中的文字信息
      • accept():接受现有警告框
      • dismiss():解散现有警告框
      • send_keys(keysToSend):发送文本至警告框

    21.文件上传:send_keys()

    driver.find_element_by_css_selector(".uploadpic").send_keys(r'E:pictures.png')

    22.cookie处理:

    • get_cookies():获得所有cookie信息
    • get_cookie(name):返回字典的key为“name”的cookie信息
    • add_cookie(cookie_dict):添加cookie。“cookie_dict”指字典对象,必须有name和value值
    • delete_cookie(name,optionsString):删除cookie信息。“name”是要删除的cookie的名称,“optionsString”是该cookie的选项,目前支持的选项包括“路径”,“域”
    • delete_all_cookies():删除所有cookie信息

    23.滚动条设置(2种方式):

    复制代码
    # 使用scrollTop滑动到底部
    js = "var action=document.documentElement.scrollTop=10000"
    driver.execute_script(js)
    # 使用scrollTo设置位置
    driver.set_window_size(600, 600)
    js = "window.scrollTo(100,450);"
    driver.execute_script(js)
    复制代码

    24.窗口截图:get_screenshot_as_file()

    25.关闭窗口:close()

    26.生成随机数:radint()

  • 相关阅读:
    Eclipse护眼技巧
    Maven搭建SSM框架(Spring+SpringMVC+MyBatis)
    Spring之各jar包作用
    Maven新建web项目jsp报错
    js金额转大写(万元为单位)
    linux常用指令
    ie8下数组不支持indexOf方法解决方法
    string,stringBuffer,stringBuilder的比较
    input限制输入
    spring boot Mybatis --maven
  • 原文地址:https://www.cnblogs.com/101718qiong/p/8250104.html
Copyright © 2011-2022 走看看