文档章节

小白记录:2、python 用Selenium 模块 模拟启动chrome 浏览器设置

苏灿
 苏灿
发布于 2017/08/29 21:52
字数 1123
阅读 106
收藏 0

安装及环境调试

注:py2

1、下载安装chrome浏览器,安装在任意文件夹

2、下载chromedrive,放到chrome.exe 文件夹下。举例:我的chrome安装在

将chromedriver放在该文件夹下即可。

注:chromedriver版本与chrome浏览器版本对应关系:

chromedriver版本 支持的Chrome版本
v2.31 v58-60
v2.30 v58-60
v2.29 v56-58
v2.28 v55-57
v2.27 v54-56
v2.26 v53-55
v2.25 v53-55
v2.24 v52-54
v2.23 v51-53
v2.22 v49-52
v2.21 v46-50
v2.20 v43-48
v2.19 v43-47
v2.18 v43-46
v2.17 v42-43
v2.13 v42-45
v2.15 v40-43
v2.14 v39-42
v2.13 v38-41
v2.12 v36-40
v2.11 v36-40
v2.10 v33-36
v2.9 v31-34
v2.8 v30-33
v2.7 v30-33
v2.6 v29-32
v2.5 v29-32
v2.4 v29-32

 

chromedriver下载地址

配置环境变量

C:\Program Files (x86)\Google\Chrome\Application

将文件地址加入环境变量

python中测试

from selenium import webdriver

browser = webdriver.Chrome()
browser.get(r"http://www.baidu.com/")

这时候就可以看到chrome浏览器打开了百度主页

常用函数

新建实例driver = webdriver.Chrome()
1.通过标签属性Id查找元素
方法:find_element_by_id(element_id)
实例:driver.find_element_by_id("iptUsername")
2.通过标签属性name查找元素
方法:find_element_by_name(element_name)
实例:driver.find_element_by_id("inputPwname")
3.通过标签Xpath路径查找元素
方法:find_element_by_xpath(xpath)
实例:driver.find_element_by_xpath("//div[@id='menuContainer']/div/div/ul/li[4]/a")
4.通过标签名tagname查找元素
方法:find_element_by_tag_name(tag_name)
实例:driver.find_element_by_tag_name("input")
注意:通过tag_name查找时使用find_element_by_tag_name查找到的是第一个标签的tag_name
5.通过标签中的元素文本链接查找元素
方法:find_element_by_link_text(link_text)
实例:driver.find_element_by_link_text('登  录')
6.通过标签的class属性查找元素
方法:find_elements_by_class_name(class_name)
实例:driver.find_elements_by_class_name("x-panel-body")
7.通过css样式查找元素
方法:find_element_by_css_selector()
实例:driver.find_element_by_css_selector("input.btn") 温馨提示:find_elements_by_id()查询到的是一个集合,如果id名字重复的时候可以采取find_elements_by_id(),其他的查询方式同理;
8.浏览器中加载url
方法:get(url)
实例:driver.get("http//:www.baidu.com")
9.向前
方法:forward()
实例:driver.forward()
10.返回当前会话中的cookies
方法:get_cookies()
实例:driver.get_cookies()
11.根据cookie name 查找
方法:driver.get_cookie(cookie_name)
实例:driver.get_cookie("NET_SessionId")
12.截取当前页面
方法:
get_screenshot_as_file(filename)
实例:driver.
get_screenshot_as_file("D:\\Program Files\\Python27\\NM.bmp")
13.获取当前窗口的坐标
方法:get_window_position()
实例:driver.get_window_position()
14.获取当前窗口的长和宽
方法:get_window_size()
实例:driver.get_window_size()

举例1:打开百度图片搜索美女

#coding=utf-8
from selenium import webdriver

driver = webdriver.Chrome()
driver.get(r"https://image.baidu.com/")

driver.find_element_by_name("word").send_keys(u"美女")
driver.find_element_by_class_name("s_btn").click()

举例2:打开百度搜索美女

#coding=utf-8
from selenium import webdriver

driver = webdriver.Chrome()
driver.get(r"https://www.baidu.com/")

driver.find_element_by_id("kw").send_keys(u"美女")
driver.find_element_by_id("su").click()

尝试登陆163邮箱

#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

driver = webdriver.Chrome()
driver.get(r"http://mail.163.com/")
time.sleep(5)
#等待加载
driver.switch_to_frame("x-URS-iframe")
#跳转到框架,定位frame的id或者name属性
name = driver.find_element_by_name("email")
name.send_keys(u"你的账号")
password = driver.find_element_by_name("password")
password.send_keys(u"你的密码")
password.send_keys(Keys.RETURN)

需要跳转到页面是因为frame中实际上是嵌入了另一个页面,而webdriver每次只能在一个页面识别,因此需要先定位到相应的frame,对那个页面里的元素进行定位。

还是以163邮箱为例

我们可以发现 账号与密码的输入栏均在框架之下

我们复制上面的链接,在浏览器里访问,可以发现就是我们需要的登陆界面

所以我们需要在加载初始页面后在访问框架,然后在定位框架内的账号密码输入框。这样才能完成自动登陆。

如何切入框架

switch_to_frame("name/id")
#或
switch_to.frame("name/id")
#若无name或id属性
switch_to.frame(driver.find_element_by_class_name("iframe"))
# 括号内可以是任意方法xpath等

切回主页面

driver.switch_to.default_content()

切入框架内框架

driver.switch_to.frame("frame1")
driver.switch_to.frame("frame2")

从frame2 切回frame1

driver.switch_to.parent_frame()  

弹窗锁定

driver.current_window_handle

163自动登陆加发送邮件

#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

driver = webdriver.Chrome()
driver.get(r"http://mail.163.com/")
time.sleep(2)
#等待加载
driver.switch_to.frame("x-URS-iframe")
#跳转到框架,定位frame的id或者name属性
name = driver.find_element_by_name("email")
name.send_keys("邮箱账号")
#定位输入框并写入邮箱账号
password = driver.find_element_by_name("password")
password.send_keys("你的密码")
#定位输入框并写入密码
password.send_keys(Keys.RETURN)
#回车登陆
time.sleep(2)
#等待加载
write = driver.find_element_by_id("_mail_component_68_68")
write.click()
#点击写信
time.sleep(2)
#等待加载
driver.find_element_by_class_name("nui-editableAddr-ipt").send_keys("目标邮箱")
#输入发送邮箱地址
driver.switch_to.frame(driver.find_element_by_class_name("APP-editor-iframe"))
#进入邮件书写框架
driver.find_element_by_class_name("nui-scroll").send_keys("test")
#填写内容
driver.switch_to.default_content()
#跳回主界面
driver.find_element_by_class_name("nui-toolbar-item").click()
#点击发送
driver.current_window_handle
#捕捉弹窗
driver.find_element_by_class_name("nui-msgbox-ft-btns").find_element_by_css_selector('div.js-component-button.nui-mainBtn.nui-btn').click()
#确定发送

 

© 著作权归作者所有

共有 人打赏支持
苏灿
粉丝 0
博文 5
码字总数 2528
作品 0
Python分布式爬虫打造搜索引擎Scrapy精讲

快乐糖果屋 三十一 Python分布式爬虫打造搜索引擎Scrapy精讲—chrome谷歌浏览器无界面运行、scrapy-splash、splinter 1、chrome谷歌浏览器无界面运行 chrome谷歌浏览器无界面运行,主要运行在...

linjin200
09/07
0
0
Python + Selenium + Firefox 使用代理 auth 的用户名密码授权

米扑代理,全球领导的代理品牌,专注代理行业近十年,提供开放、私密、独享代理,并可免费试用 米扑代理官网:https://proxy.mimvp.com 本文示例,是结合米扑代理的私密、独享、开放代理,专...

sunboy2050
07/15
0
0
selenium webdriver 启动三大浏览器Firefox,Chrome,IE

selenium webdriver 启动三大浏览器Firefox,Chrome,IE 2017年04月01日 19:28:42 阅读数:71087 标签: seleniumpythonchromedriver iedrive 更多 个人分类: seleniumPython 版权声明:本文为...

linjin200
09/07
0
0
Selenium是如何操纵浏览器的?

前言 上一篇文章《selenium webdriver 是怎么运行的》用了一个简单的例子——搭出租车,形象地讲解selenium webdriver 是如何运行的,而这一篇文章可以理解为深入了解selenium是如何和浏览器...

深圳-逸遥
08/20
0
0
分享一个神器,Selenium 自动化测试工具

最近写项目的时候,用到了Selenium,一个 Web 端的自动化测试工具,直接运行在浏览器中,用来模拟用户操作。 Selenium 不仅仅可以用作自动化测试,还有很多种玩法,比如 Python 的爬虫,实现...

angkee
05/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

C++基础知识

链接:https://zhuanlan.zhihu.com/p/38399566 本文主要提一下以下三个区别: 引用必须初始化,而指针可以不初始化。 我们在定义一个引用的时候必须为其指定一个初始值,但是指针却不需要。 ...

悲催的古灵武士
12分钟前
0
0
Oracle备份脚本,保留10天数据

@echo off echo 删除10天前的备分文件和日志forfiles /p "D:\oracleback\backfile" /m *.dmp /d -10 /c "cmd /c del @path" forfiles /p "D:\oracleback\backfile" /m *.log /d -10......

lyle_luo
14分钟前
0
0
window版mysql备份数据

@echo off ::title name title db_backup ::color is green COLOR 2 ::defined value set yy=%date:~0,4% set mm=%date:~5,2% set dd=%date:~8,2% if /i %time:~0,2% lss 10 set hh=0%time:~......

恋码之子
17分钟前
0
0
hashmap嘿嘿嘿

1、jdk1.7 数组加链表 2、链表存放数据:hashcode相同,Entry{key:键 value:值 next:下一个节点} 3、取模算法,计算出存放数组的下标 int index = key.hashCode()%tables.length;...

熊猫你好
29分钟前
0
0
ca证书创建和docker-api证书设置

openssl genrsa -aes256 -out ca-key.pem 4096 // 这一步的密码千万不能忘记,下面要用到 openssl req -new -x509 -days 3650 -key ca-key.pem -sha256 -out ca.pem# 国家:CN# 省:.# 市......

chenbaojun
29分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部