zoukankan      html  css  js  c++  java
  • Splinter学习--初探1,模拟百度搜索

    Splinter是以Selenium, PhantomJSzope.testbrowser为基础构建的web自动化测试工具,基本原理同selenium

    支持的浏览器包括:Chrome, Firefox(默认)

    模拟百度搜索Splinter

    from splinter import Browser

    两种初始化Browser的方法,区别在于method2中离开with块区域后,browser自动关闭,而method1中若要关闭browser需主动调用quit()方法。 browser = Browser() # method1
    with Browser() as b: # method2
    # stuff ...

    通过Browser类,可实现模拟浏览器的大部分操作:
    Step1: 打开百度首页
      browser.visit("http://www.baidu.com")  # visit(url)用于打开指定URL的网页

    Step2: 文本框输入搜索内容,如Splinter
      browser.find_by_id("kw").first.fill("splinter")    # fill()方法用于填充文本框内容
      # browser支持多种查找方案,同selenium,如id,name,css,xpath
      
    browser.find_by_id("su").click() # click()方法用于点击动作
    注: Splinter中的find_by_*()方法,返回的均是列表类型ElementList,利用.first 或.last可分别获取第一个和最后一个元素,也可通过索引方式获取,默认情况下返回第一个元素(即
        browser.find_by_id("kw").first  <==>
        browser.find_by_id("kw")    <==>
        browser.find_by_id("kw")[0]
       )。

    Step3: 判断当前网页中是否有Splinter,利用is_text_present(text,wait_time)方法查看当前页面是否包含指定text
      if browser.is_text_present("Splinter 0.7.3 documentation", 10):
      current_win = browser.windows.current # 获取当前窗口句柄

    Step4: 打开Splinter官方文档页,查找到对应元素并点击
      browser.find_by_id("1").first.find_by_xpath("h3//a")[0].click()
      
    Step5: 切换窗口。点击后会产生新的窗口,browser.windows包含了当前所有窗口句柄,可通过判断来确认新的窗口
      if len(browser.windows) > 1 :
      for win in browser.windows:
      if win is current_win:
      continue
      else:
      print "current window title2: %s"% win.title
      win.prev # 回到前一个窗口,即current_win

    注: 窗口切换相关
    browser.windows              # 获取所有窗口对象句柄
    browser.windows[0]           # 获取第一个窗口句柄
    browser.windows[window_name] # 获取指定名称的窗口句柄
    browser.windows.current      # 获取当前活动窗口
    browser.windows.current = browser.windows[3]  # 指定第四个窗口为当前活动窗口
    
    window = browser.windows[0]
    window.is_current            # boolean - 判断window对象是否为当前窗口
    window.is_current = True     # 设定window为当前窗口
    window.next                  # 跳转到window的下一个窗口
    window.prev                  # 回到window的上一个窗口
    window.close()               # 关闭 window
    window.close_others()        # 关闭window之外的所有窗口

      

     

  • 相关阅读:
    c/c++字节序转换(转)
    O_DIRECT与O_SYNC区别(转)
    TCMalloc小记(转)
    内存优化总结:ptmalloc、tcmalloc和jemalloc(转)
    不依赖三方库从图像数据中获取宽高-gif、bmp、png、jepg
    Linux查看物理CPU个数、核数、逻辑CPU个数
    unix环境高级编程-3.10-文件共享(转)
    TF_Server gRPC failed, call return code:8:Received message larger than max (45129801 vs. 4194304)
    google doc上的云转换
    telnet 退出命令
  • 原文地址:https://www.cnblogs.com/java-wgm/p/5170181.html
Copyright © 2011-2022 走看看