1. from selenium import webdriver
  2. from selenium.webdriver.common.keys import Keys
  3. from bs4 import BeautifulSoup
  4. from selenium.webdriver.chrome.options import Options
  5.  
  6. import time
  7. import selenium
  8. import random
  9.  
  10. # from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
  11.  
  12. def driver_open():
  13. # dcap = dict(DesiredCapabilities.PHANTOMJS)
  14. # dcap["phantomjs.page.settings.userAgent"] = (r"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3100.0 Safari/537.36")
  15. options = Options()
  16. options.add_argument('--log-level=3')
  17. driver = webdriver.Chrome(executable_path='E:\chromedriver\chromedriver.exe', chrome_options=options)
  18. return driver
  19.  
  20. def next_windows(driver,current_window):
  21. window_handles = driver.window_handles
  22. for window_handle in window_handles:
  23. if current_window != window_handle:
  24. handleb = window_handle
  25.  
  26. driver.switch_to.window(handleb)
  27. return driver
  28.  
  29. def next_windows_handle(driver,current_window):
  30. window_handles = driver.window_handles
  31. for window_handle in window_handles:
  32. if current_window != window_handle:
  33. handleb = window_handle
  34. return handleb
  35.  
  36. if __name__ == '__main__':
  37. learn_dict = {}
  38. driver = driver_open()
  39. driver.maximize_window()
  40. driver.implicitly_wait(10) # seconds
  41. # # Theoretical study
  42. theoretical_study_url = 'xxxxx'
  43. driver.get(theoretical_study_url)
  44. time.sleep(20)
  45. current_window = driver.current_window_handle
  46. print(current_window)
  47. # 浏览6篇文章
  48. article = 6
  49. elements = driver.find_elements_by_xpath('//span[contains(@class,"text")]')
  50. for element in elements:
  51. element.click()
  52. driver = next_windows(driver,current_window)
  53. client_height = driver.execute_script("return document.body.clientHeight;")
  54. # scroll_height = driver.execute_script("return document.body.scrollWidth;")
  55.  
  56. # print(scroll_height)
  57. init_position = 0
  58. while (client_height > init_position):
  59. init_position = init_position + 200
  60. js_string = "window.scrollTo(0," + str(init_position) + ");"
  61. driver.execute_script(js_string)
  62. sleep_time = random.randint(2, 4)
  63. time.sleep(sleep_time)
  64.  
  65. time.sleep(3)
  66. driver.close()
  67. driver.switch_to.window(current_window)
  68. article = article - 1
  69. if(article == 0):
  70. break
  71.  
  72. driver.get('xxxxxx')
  73. time.sleep(3)
  74.  
  75. window_handles = driver.window_handles
  76. for window_handle in window_handles:
  77. current_window = window_handle
  78.  
  79. driver.switch_to.window(current_window)
  80. # 浏览6个视频
  81. videos_count = 6
  82. videos = driver.find_elements_by_xpath('//div[contains(@class,"innerPic")]')
  83. for video in videos:
  84. driver.switch_to.window(current_window)
  85. video.click()
  86. driver = next_windows(driver, current_window)
  87. js_string = "window.scrollTo(0,400);"
  88. driver.execute_script(js_string)
  89. time_sleep = random.randint(10,50)
  90. time.sleep(time_sleep)
  91. driver.close()
  92. videos_count = videos_count - 1
  93. if(videos_count == 0):
  94. break
  95.  
  96. driver.quit()

  

【自动化测试】WebDriver使用的更多相关文章

  1. 《手把手教你》系列技巧篇(二十三)-java+ selenium自动化测试-webdriver处理浏览器多窗口切换下卷(详细教程)

    1.简介 上一篇讲解和分享了如何获取浏览器窗口的句柄,那么今天这一篇就是讲解获取后我们要做什么,就是利用获取的句柄进行浏览器窗口的切换来分别定位不同页面中的元素进行操作. 2.为什么要切换窗口? Se ...

  2. 编写unit test以及自动化测试WebDriver

    http://msdn.microsoft.com/en-us/library/hh694602.aspx#BKMK_Quick_starts   http://www.seleniumhq.org/ ...

  3. Selenium自动化测试WebDriver下载

    1. 所有版本chrome下载 是不是很难找到老版本的chrome?博主收集了几个下载chrome老版本的网站,其中哪个下载的是原版的就不得而知了. http://www.slimjet.com/ch ...

  4. Selenium (4) —— Selenium是什么? WebDriver是什么?做什么?(101 Tutorial)

    Selenium (4) -- Selenium是什么? WebDriver是什么?做什么?(101 Tutorial) selenium版本: v2.48.0 (Standalone Seleniu ...

  5. Web前端工程师成长之路——知识汇总

    一.何为Web前端工程师?          前端工程师,也叫Web前端开发工程师.他是随着web发展,细分出来的行业.Web前端开发工程师,主要职责是利用(X)HTML/CSS/JavaScript ...

  6. Web前端工程师成长之路

    一.何为Web前端工程师?        前端工程师,也叫Web前端开发工程师.他是随着web发展,细分出来的行业.Web前端开发工程师,主要职责是利用(X)HTML/CSS/JavaScript/D ...

  7. 如何成为一名优秀的前端工程师 (share)

    发现一篇不错的博文,和大家分享一下,为有志成为一名优秀前端工程师的童鞋们提供一个参考. :)~ 本文来源:http://www.biaodianfu.com/what-makes-a-good-fro ...

  8. Web前端知识技能大汇总

    项目起源 还记得@jayli 的这幅前端知识结构图么. 图片的形式具有诸多的不便.缺失源图的我们,无法为此图贡献些什么,随着时间的迁移,或许有些技术点会发生改变,所以有了这个GitHub项目.我们可以 ...

  9. 前端技能汇总 Frontend Knowledge Structure

    Frontend Knowledge Structure 项目起源 还记得@jayli 的这幅前端知识结构图么. 图片的形式具有诸多的不便.缺失源图的我们,无法为此图贡献些什么,随着时间的迁移,或许有 ...

  10. Web 建站技术中,HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、ASP.NET、Web Services 是什么(转)

    Web 建站技术中,HTML.HTML5.XHTML.CSS.SQL.JavaScript.PHP.ASP.NET.Web Services 是什么?修改 建站有很多技术,如 HTML.HTML5.X ...

随机推荐

  1. jdk与eclipse安装注意事项

    1.安装这两个软件,一定要注意使得两个软件的版本是一致的: 1.1编写小程序测试jdk的版本号: public class Text{ public static void main(String[] ...

  2. <每日一题> Day6:HDU递推专题完结

    原题链接 这是我自己Clone的专题,A,B题解昨天发过了 C:参考代码: /* 很容易我们可以手推出n = 1, 2, 3时的情况,我们假设前n - 1 列已经放好,方法有dp[n - 1]种,第n ...

  3. [常用类]String 类

    String 字符串是常量,一旦被赋值,就不能被更改. String str = “abc”: // "abc" 可以堪称是一个字符串对象 str = “def“: // 当把 & ...

  4. Linux常用指令全集

    Linux简介及Ubuntu安装 常见指令 系统管理命令 打包压缩相关命令 关机/重启机器 Linux管道 Linux软件包管理 vim使用 用户及用户组管理 文件权限管理 大牛笔记-www.weix ...

  5. MySQL第五天——日志

    日志 log_error(错误日志) 用于记录 MySQL 运行过程中的错误信息,如,无法加载 MySQL数据库的数据文件,或权限不正确等都会被记录在此. 默认情况下,错误日志是开启的,且无法禁止. ...

  6. 树莓派 msmtp和mutt 的安装和配置

    1,安装mutt sudo apt-get install mutt 2,安装msmtp sudo apt-get install msmtp 3,设置mutt /etc/Muttrc # 系统全局设 ...

  7. (NOIP)CSP-S 2019前计划

    前言 无 1.NOIP原题板刷 NOIP原题板刷 这是一篇咕了的blog 2.牛客 & ACwing & 洛谷 网课学习 收获还是蛮大的,不过我没有写博客 3.codeforces专项 ...

  8. Tenka1 Programmer Contest C - Align

    链接 Tenka1 Programmer Contest C - Align 给定一个序列,要求重新排列最大化\(\sum_{i=2}^{i=n} |a_i-a_{i-1}|\),\(n\leq 10 ...

  9. 前端每日实战:93# 视频演示如何用纯 CSS 创作一根闪电连接线

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/RBjdzZ 可交互视频 此视频是可 ...

  10. Java技术中如何使用keepalived实现双机热备

    Keepalived简介 Keepalived是Linux下一个轻量级别的高可用解决方案.高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可用行,狭 ...