小白记录:2、python 用Selenium 模块 模拟启动chrome 浏览器设置
博客专区 > 苏灿 的博客 > 博客详情
小白记录:2、python 用Selenium 模块 模拟启动chrome 浏览器设置
苏灿 发表于8个月前
小白记录:2、python 用Selenium 模块 模拟启动chrome 浏览器设置
  • 发表于 8个月前
  • 阅读 78
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

安装及环境调试

注: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
×
苏灿
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: