selenium 学习整理

初学者,如果有不当得地方请指出,非常感谢。

准备事项:

1. Python 安装包

  安装Python,并勾选添加环境变量。

  安装完成后,打开dos窗口,输入python,看能否进入python命令行模式。如果不能就手动添加一下环境变量。

2. Chrome 安装包(其他浏览器也可以,Chrome支持得比较好;如果用IE得话,需要再设置--安全,关闭浏览器得保护模式,一个四个)

3. 浏览器版本对应得ChromeDriver.exe (去浏览器官网可以找到,必须和浏览器版本对应)

  不需要安装,直接复制到python安装目录下就好。

4. Selenium 安装包

  解压到 Python\Python35\Lib\site-packages 。注意:最好直接解压到该目录下,如果是拷贝得话,要确认打开selenium文件夹,直接看到init文件。

  验证:打开dos窗口,进入python 命令行模式,输入 from selenium imprt webdriver (没报错得话证明解压得没问题,python能直接识别该文件);

  再次输入 webdriver.Chrome() ,期望结果是启动浏览器。证明浏览器和对应得驱动是无误得。

5. 安装Pycharm (其实就是一编写工具,用自带得也行)

开始喽:

from selenium import webdriver  # 从selenium 中将webdriver 导入当前

driver = webdriver.Chrome()     # driver 是变量名,便于后面使用,起什么名都行

driver.get("http://localhost")    # 打开指定网址

driver.maximize_window()      #字面意思,最大化浏览器窗口,目前学习阶段没看到有啥用==

driver.implicity_wait(30)    # 隐式等待,比如你提交表单得时候,服务需要时间才能给到你响应,这个时候如果不让浏览器等待,直接执行下面得语句可能就会得到错误得结果。这个语句是为了便于阅读加到这。Q:这个语句是必须得么?我去百度下。。。A: 待更新。。。没找到答案,

顺便提一下,还有一种是显示等待time.sleep(5) 对于浏览器弹窗得行为,隐式等待不起作用。

今天主要针对网站得登录注册自动化。界面是下面这样得:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://localhost/")
driver.maximize_window()
driver.find_element_by_link_text("注册").click()
# find_element_by_ 通过各种方式获取目标节点,click()模拟用户点击

点击按钮这块有个坑。点击后,会新打开一个页面。而Selenium 默认针对第一个tab页。这个时候有两种方式,一种是使用switch切换窗口;一种是清除页面中新打开窗口target属性,然后再点击。下面分别写一下。

 from selenium import webdriver

 driver = webdriver.Chrome()
driver.get("http://localhost/")
driver.maximize_window()
driver.find_element_by_link_text("注册").click()
# find_element_by_ 通过各种方式获取目标节点,click()模拟用户点击 current_tab = driver.current_window_handle
# current_tab 是首页
all_tab = driver.window_handles
for i in all_tab:
if i == current_tab:
driver.close()
else:
driver.switch_to.window(i)

这个是使用switch方式切换,并把另一个tab页关闭,这样就保持了浏览器一直一个tab页。

 from selenium import webdriver

 driver = webdriver.Chrome()
driver.get("http://localhost/")
driver.maximize_window() js = 'document.getElementsByClassName("site-nav-right fr")[0].childNodes[3].removeAttribute("target")'
# 注意单双引号
driver.execute_script(js)
driver.find_element_by_link_text("注册").click()
# find_element_by_ 通过各种方式获取目标节点,click()模拟用户点击

中间有一句JavaScript代码,这个需要在浏览器调试模式中,逐级找到目标节点,然后执行清除属性,最好是实验好了,直接粘到python代码中。

== 先去吃饭,晚上回来接着写。一边写一边练习一边问自己为什么。感觉棒棒哒~

最新文章

  1. 深入学习jQuery节点操作
  2. CF724D. Dense Subsequence[贪心 字典序!]
  3. DS28E01芯片解密DS28E01-100单片机解密多少钱?
  4. ubuntu-kylin16.04搭建lamp环境。
  5. C#设计模式(10)——组合模式(Composite Pattern)
  6. java多线程的实现的两种方法
  7. wampserver图标黄色
  8. Redis整合Spring结合使用缓存实例(转)
  9. 第二十节,基本数据类型,集合set、综合应用新数据更新老数据
  10. 阿里云maven仓库配置
  11. MYSQL OR与AND同时出现的用法
  12. the shortest path algorithm
  13. terminal下历史命令自动完成功能history auto complete
  14. C语言(C++语言)中##(两个井号)和#(一个井号)用法[转]
  15. 原 TCP层的分段和IP层的分片之间的关系 & MTU和MSS之间的关系
  16. SJA1000 CAN驱动程序演示实验
  17. [转]C++ template —— 模板基础(一)
  18. VS2010/MFC编程入门之三十六(工具栏:工具栏资源及CToolBar类)
  19. idea+maven本地仓库更新问题
  20. spring boot 定时任务

热门文章

  1. Go语言学习笔记(四)结构体struct & 接口Interface & 反射
  2. (转)js jquery.qrcode生成二维码 带logo 支持中文
  3. 为什么Java大数据是最火爆的编程语言?
  4. 【RegExp】JavaScript中正则表达式判断匹配规则以及常用方法
  5. Canvas 仿百度贴吧客户端 loading 小球
  6. python教程6-2:字符串标识符
  7. 拓扑排序下的有无环判定 STL方法
  8. 微信小程序(有始有终,全部代码)开发---跑步App+音乐播放器 Bug修复
  9. ASP.NET Core 源码学习之 Logging[4]:FileProvider
  10. 多系统重装其中Win7后的启动引导列表恢复