Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS,Chrome这些无界面的浏览器)。
Selenium 可以根据我们的指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生。
Selenium 自己不带浏览器,不支持浏览器的功能,它需要与第三方浏览器结合在一起才能使用。但是我们有时候需要让它内嵌在代码中运行,所以我们可以用一个叫 PhantomJS 的工具代替真实的浏览器。
可以从 PyPI 网站下载 Selenium库https://pypi.python.org/simpl…
也可以用 第三方管理器 pip用命令安装(windows 环境):pip install selenium
Selenium 官方参考文档:http://selenium-python.readth…
火狐浏览器 geckdriver 下载地址:https://github.com/mozilla/geckodriver/releases
如果是 chromedriver 参见:https://segmentfault.com/a/1190000013940356
导入 webdriver
from selenium import webdriver
要想调用键盘按键操作需要引入keys包
from selenium.webdriver.common.keys import Keys
#设置路径
#driver = webdriver.Firefox(executable_path="C:\Python36\geckodriver.exe")
#创建firefox 参数
opt = webdriver.FirefoxOptions()
#创建无界面对象
driver = webdriver.Firefox(options=opt)
很多人在用selenium定位页面元素的时候会遇到定位不到的问题,明明元素就在那儿,用firebug也可以看到,就是定位不到,这种情况很有可能是frame在搞鬼(原因之一,改天专门说说定位不到元素,可能的一些原因及处理办法)。
frame标签有frameset、frame、iframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位,而frame与iframe对selenium定位而言是一样的,selenium有一组方法对frame进行操作。
driver.switch_to_frame() 这个方法也许以后不用了
一般写成 driver.swith_to.frame(‘frame的id’)
查找完成后记得用
driver.switch_to.default_content()
退出 不然会出错
driver.get(“http://www.baidu.com/”)
主要是获取页面find_ 找元素
data = driver.find_element_by_id(“wrapper”).text
print data
print driver.title
driver.save_screenshot(“baidu.png”)
driver.find_element_by_id(“kw”).send_keys(u"长城")
driver.find_element_by_id(“su”).click()
driver.save_screenshot(“长城.png”)
print driver.get_cookies()
driver.find_element_by_id(“kw”).send_keys(Keys.CONTROL,‘a’)
driver.find_element_by_id(“kw”).send_keys(Keys.CONTROL,‘x’)
driver.find_element_by_id(“kw”).send_keys(“itcast”)
driver.find_element_by_id(“su”).send_keys(Keys.RETURN)
driver.find_element_by_id(“kw”).clear()
print driver.page_source
print driver.current_url
driver.quit()
Selenium 的 WebDriver提供了各种方法来寻找元素,假设下面有一个表单输入框:
element = driver.find_element_by_id(“passwd-id”)
element = driver.find_element_by_name(“user-name”)
element = driver.find_elements_by_tag_name(“input”)
element = driver.find_element_by_xpath("//input[@id=‘passwd-id’]")
#!/usr/bin/env python
# -*- coding:UTF-8 -*-
'''
@version: v2.7.13
@author: dongzh
@license: Apache Licence
@contact: 986042572@qq.com
@site: http://blog.csdn.net/hqzxsc2006
@software: PyCharm Community Edition
# @FileName: baidu.py.py
# @Time : 2018/9/20 14:29
'''
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
def test():
url = "https://www.douban.com/"
# 创建firefox 参数
opt = webdriver.FirefoxOptions()
#设置成无界面
opt.set_headless()
#创建无界面对象
driver = webdriver.Firefox(options=opt)
driver.get(url=url)
#查找 id为form_email的id 并输入
driver.find_element_by_id("form_email").send_keys(用户名)
driver.find_element_by_id("form_password").send_keys(密码)
#找到验证码保存
driver.save_screenshot('运行中.png')
code = input('请输入验证码:')
#查找后输入验证码
driver.find_element_by_id('captcha_field').send_keys(code)
#找到按钮点击
driver.find_element_by_class_name("bn-submit").click()
time.sleep(3)
driver.save_screenshot('豆瓣登录完成.png')
#打印渲染过的源代码
#print(driver.page_source)
#driver.save_screenshot("豆瓣.png")
test()