用python操作浏览器的三种方式_经验 | python 操作浏览器的三种方式

本文详细介绍了使用Python操作浏览器的三种方法:Selenium、webbrowser和Splinter。通过Selenium的webdriver接口,可以实现浏览器的自动化控制,如Chrome、Firefox和IE。webbrowser库提供了一种标准库方法,用于在现有浏览器中打开新链接。Splinter是一个Python库,简化了浏览器自动化,包括登录126邮箱的示例。文章还深入讲解了webdriver的元素定位技巧,如通过id、name、class、link_text、css_selector和xpath等方法进行定位。
摘要由CSDN通过智能技术生成

第一种:selenium导入浏览器驱动,用get方法打开浏览器,例如:

import timefrom selenium import webdriverdef mac(): # browser = webdriver.Chrome() # browser = webdriver.Firefox() browser = webdriver.Ie() browser.implicitly_wait(5) browser.get("http://www.baidu.com/")

第二种:通过导入python的标准库webbrowser打开浏览器,例如:

import webbrowserdef mac(): # web.open(‘http://www.baidu.com’,new=0,autoraise=True) # new:0/1/2 0:同一浏览器窗口打开 1:打开浏览器新的窗口,2:打开浏览器窗口新的tab; autoraise=True:窗口自动增长 # web.open_new_tab(‘http://www.baidu.com’) web.open_new(‘http://www.baidu.com’)

第三种:使用Splinter模块模块

一、Splinter 的安装Splinter 的使用必修依靠 Cython、lxml、selenium 这三个软件。所以,安装前请提前安装 Cython、lxml、selenium。

二、Splinter 的使用 这里,我给出自动登录 126 邮箱的案例。难点是要找到页面的账户、密码、登录的页面元素,这里需要查看 126 邮箱登录页面的源码,才能找到相关控件的 id.

例如: 输入密码,密码的文本控件 id 是 pwdInput. 可以使用browser.find_by_id() 方法定位到密码的文本框,接着使用fill() 方法,填写密码。至于模拟点击按钮,也是要先找到按钮控件的 id, 然后使用 click() 方法。

# coding=utf-8import time from splinter import Browserdef splinter(url): browser = Browser() # login 126 email websize browser.visit(url) # wait web element loading time.sleep(5) # fill in account and password browser.find_by_id("idInput").fill("xxxxxx") browser.find_by_id("pwdInput").fill("xxxxx") # click the button of login browser.find_by_id("loginBtn").click() time.sleep(8) # close the window of brower browser.quit() if __name__ == "__main__": websize3 ="http://www.126.com" splinter(websize3)

WebDriver简介

selenium 从 2.0 开始集成了 webdriver 的 API,提供了更简单,更简洁的编程接口。selenium webdriver 的目标是提供一个设计良好的面向对象的 API,提供了更好的支持进行 web-app 测试。

打开浏览器

在 selenium+python 自动化测试(一)–环境搭建中,运行了一个测试脚本,脚本内容如下:

from selenium import webdriverimport timebrowser = webdriver.Chrome()browser.get("http://www.baidu.com")print(browser.title)browser.find_element_by_id("kw").send_keys("selenium")browser.find_element_by_id("su").click()time.sleep(3)browser.close()

webdriver 是一个 Web 应用程序测试自动化工具,用来验证程序是否如预期的那样执行。

webdriver.Chrome():创建一个 Chrome 浏览器的 webdriver 实例

browser.get(“http://www.baidu.com“):打开”http://www.baidu.com”页面

browser.find_element_by_id(“kw”).send_keys(“selenium”):找到 id 为“kw”的元素,在这个页面上为百度首页的搜索框,在其中输入“selenium”

browser.find_element_by_id(“su”).click():找到 id 为“su”的元素并点击,在这个页面上为百度首页的“百度一下”按钮

browser.close():退出浏览器

运行脚本的第一步是打开浏览器,使用 webdriver.Chrome() 打开谷歌浏览器,如果要指定其他浏览器,比如要使用 Firefox 或者 IE 浏览器,更换浏览器名称就可以了

browser = webdriver.Chrome() // 打开 Chrome 浏览器

browser = webdriver.Firefox() // 打开 Firefox 浏览器

browser = webdriver.Ie() // 打开 IE 浏览器

第二步操作是打开页面,使用browser.get(url)方法来打开网页链接,例如脚本中打开百度首页

browser.get("http://www.baidu.com")

接下来是 **print(browser.title)**,使用browser.title获取当前页面的title,title就是在浏览器 tab 上显示的内容,例如百度首页的标题是“百度一下,你就知道”

浏览器前进后退

在当前页面打开一个新的链接后,如果想回退到前一个页面,使用如下browser.back(),相当于点击了浏览器的后退按钮

和 back 操作对应的是浏览器前进操作browser.forward(),相当于点击了浏览器的前进按钮

browser.back() // 回到上一个页面

browser.forward() // 切换到下一个页面

浏览器运行后,如果页面没有最大化,可以调用browser.maximize_window()将浏览器最大化,相当于点击了页面右上角的最大化按钮

browser.maximize_window() // 浏览器窗口最大化

browser.set_window_size(800, 720) // 设置窗口大小为 800*720

浏览器截屏操作,参数是截屏的图片保存路径:

browser.get_screenshot_as_file("D:/data/test.png") 屏幕截图保存为***

browser.refresh() // 重新加载页面, 页面刷新

在测试脚本运行完后,一般会在最后关闭浏览器,有两种方法关闭浏览器,close()方法用于关闭当前页面,quit()方法关闭所有和当前测试有关的浏览器窗口

browser.close() // 关闭当前页面

browser.quit() // 关闭所有由当前测试脚本打开的页面

页面元素定位

要定位页面元素,需要找到页面的源码。

IE 浏览器中,打开页面后,在页面上点击鼠标右键,会有“查看源代码”的选项,点击后就会进入页面源码页面,在这里就可以找到页面的所有元素

使用 Chrome 浏览器打开页面后,在浏览器的地址栏右侧有一个图标,点击这个图标后,会出现许多菜单项,选择更多工具里的开发者工具,就会出现页面的源码,不同版本的浏览器菜单选项可能不同,但是都会在开发者工具里找到页面的源码

Firefox 浏览器打开页面后,在右键菜单里也可以找到“查看页面源代码”的选项。在 Firefox 中,可以使用浏览器自带的插件查看定位元素,在 Firefox 的附加组件里搜索 firebug 进行下载,安装 firebug 组件后会在浏览器的工具栏中多出一个小虫子的图标,点击这个图标就可以打开组件查看页面源码,打开后如下图所示

以百度首页搜索页面为例,看一下 webdriver 定位元素的八种方式

使用id定位

在页面源码中找到搜索输入框的元素定义

可以看到输入框有一个有一个 id 的属性,调用find_element_by_id()根据 id 属性来找到元素,参数为属性的值

input_search = browser.find_element_by_id("kw")

使用name定位

使用find_element_by_name()根据 name 属性找到元素,参数为 name 属性的值

搜索框有一个 name=”wd”的属性,使用 name 查找搜索输入框元素

input_search = browser.find_element_by_name("wd")

使用className定位

使用find_element_by_class_name()根据 className 属性找到元素,参数为 className 属性的值

搜索框有一个 class=”s_ipt”的属性,使用 className 查找元素

input_search = browser.find_element_by_class_name("s_ipt")

使用tagName定位

使用find_element_by_tag_name()根据 tagName 属性找到元素,参数为元素标签的名称

每个页面的元素都有一个 tag,搜索框的标签为 input,有时候一个页面里有许多相同的标签,所以用这种方法找到的元素一般都不准确,除非这个元素使用的标签在这个页面里是唯一的。一般不会使用这种方式来定位元素

input_search = browser.find_element_by_class_name("input")

使用link_text定位

页面上都会有一些文本链接,点击链接后会打开一个新的页面,这些可以点击的链接可以使用find_element_by_link_text来定位,百度首页上方有如下几个元素

例如要定位“新闻”,找到元素的代码,有一个 href 的属性,这是点击后打开的页面

新闻

使用 link_text 查找元素ÿ

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值