Selenium 学习笔记(一)

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属性,然后再点击。下面分别写一下。

 1 from selenium import webdriver
 2 
 3 driver = webdriver.Chrome()
 4 driver.get("http://localhost/")
 5 driver.maximize_window()
 6 driver.find_element_by_link_text("注册").click()
 7 # find_element_by_ 通过各种方式获取目标节点,click()模拟用户点击
 8 
 9 current_tab = driver.current_window_handle 
10 # current_tab 是首页
11 all_tab = driver.window_handles
12 for i in all_tab:
13     if i == current_tab:
14         driver.close()
15     else:
16         driver.switch_to.window(i)

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

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

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

 

 

 

 

 

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

 

posted @ 2017-09-04 19:13  闪耀的学士帽  阅读(314)  评论(0编辑  收藏  举报