Selenium的简单实用

Python爬虫:学习selenium的正确姿势!!! 目录前言selenium的安装pip 安装验证安装ChromeDriver的安装下载ChromeDriver环境变量配置验证安装selenium的基本使用介绍简单示例查找元素等待页面加载完成显式等待隐式等待等待条件前进和后退Cookie异常处理最后 前言 在上篇文章中,我为大家介绍了Ajax的分析和抓取方式,这其实也是javascript动态渲染页面的一种方式,通过直接分析Ajax,仍然可以通过requests来实现数据的获取。 不过javascript动态渲染页面不止Ajax这种。有些网站的分页部分可能是 阅读详情

Selenium的简单实用

是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。

##selenium的基本用法

声明浏览器对象
上面我们知道了selenium支持很多的浏览器:

img

但是如果想要声明并调用浏览器则需要:

from selenium import webdriver

browser = webdriver.Chrome()
browser = webdriver.Firefox()

这里只写了两个例子,当然了其他的支持的浏览器都可以通过这种方式调用

访问页面并打印网页源代码

from selenium import webdriver#导入库
browser = webdriver.Safari()#声明浏览器
url = 'https:www.baidu.com'
browser.get(url)#打开浏览器预设网址

print(browser.page_source)#打印网页源代码

browser.close()#关闭浏览器

上述代码运行后,会自动打开safair浏览器,并登陆百度打印百度首页的源代码,然后关闭浏览器

####查找元素

单个元素查找

from selenium import webdriver#导入库
browser = webdriver.Safari()#声明浏览器
url = 'https:www.taobao.com'
browser.get(url)#打开浏览器预设网址

input_first = browser.find_element_by_id('q')
input_two = browser.find_element_by_css_selector('#q')

print(input_first)
print(input_two)

这里我们通过2种不同的方式去获取响应的元素,第一种是通过id的方式,第二个中是CSS选择器,结果都是相同的。
输出如下:

<selenium.webdriver.remote.webelement.WebElement (session="9aaa01da6545ba2013cc432bcb9abfda", element="0.5325244323105505-1")>
<selenium.webdriver.remote.webelement.WebElement (session="9aaa01da6545ba2013cc432bcb9abfda", element="0.5325244323105505-1")>

这里列举一下常用的查找元素方法:
find_element_by_name
find_element_by_id
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector
下面这种方式是比较通用的一种方式:这里需要记住By模块所以需要导入
from selenium.webdriver.common.by import By

from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
url = 'https://www.taobao.com'
browser.get(url)
input_1 = browser.find_element(By.ID, 'q')
print(input_1)

当然这种方法和上述的方式是通用的,browser.find_element(By.ID,“q”)这里By.ID中的ID可以替换为其他几个
我个人比较倾向于css

多个元素查找
其实多个元素和单个元素的区别,举个例子:find_elements,单个元素是find_element,其他使用上没什么区别,通过其中的一个例子演示:

from selenium import webdriver

browser = webdriver.Chrome()
url = 'https://www.taobao.com'
browser.get(url)
input = browser.find_elements_by_css_selector('.service-bd li')
print(input)
browser.close()

输出为一个列表形式:

[<selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-1")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-2")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-3")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-4")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-5")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-6")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-7")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-8")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-9")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-10")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-11")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-12")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-13")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-14")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-15")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-16")>]

当然上面的方式也是可以通过导入from selenium.webdriver.common.by import By 这种方式实现
lis = browser.find_elements(By.CSS_SELECTOR,’.service-bd li’)
同样的在单个元素中查找的方法在多个元素查找中同样存在:
find_elements_by_name
find_elements_by_id
find_elements_by_xpath
find_elements_by_link_text
find_elements_by_partial_link_text
find_elements_by_tag_name
find_elements_by_class_name
find_elements_by_css_selector

元素交互操作
对于获取的元素调用交互方法

from selenium import webdriver
import time
browser = webdriver.Chrome()
browser.get(url='https://www.baidu.com')
time.sleep(2)
input = browser.find_element_by_css_selector('#kw')
input.send_keys('丞安(武汉)科技信息有限公司')
time.sleep(2)
input.clear()
input.send_keys('丞安艺术')
button = browser.find_element_by_css_selector('#su')
button.click()
time.sleep(10)
browser.close()

运行的结果可以看出程序会自动打开Chrome浏览器并打开百度页面输入韩国女团,然后删除,重新输入后背摇,并点击搜索
Selenium所有的api文档:http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.action_chains

交互动作
将动作附加到动作链中串行执行

from selenium import webdriver
from selenium.webdriver import ActionChains

browser = webdriver.Chrome()

url = "http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable"
browser.get(url)
browser.switch_to.frame('iframeResult')
source = browser.find_element_by_css_selector('#draggable')
target = browser.find_element_by_css_selector('#droppable')
actions = ActionChains(browser)
actions.drag_and_drop(source, target)
actions.perform()

更多操作参考:http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.action_chains

执行JavaScript
这是一个非常有用的方法,这里就可以直接调用js方法来实现一些操作,
下面的例子是通过登录知乎然后通过js翻到页面底部,并弹框提示

from selenium import webdriver
browser = webdriver.Chrome()
browser.get("http://www.zhihu.com/explore")
browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
browser.execute_script('alert("To Bottom")')

img

获取元素属性
get_attribute(‘class’)

from selenium import webdriver
import time
browser = webdriver.Chrome()
browser.get("http://www.zhihu.com/explore")
logo = browser.find_element_by_css_selector('.zu-top-link-logo')
print(logo)
print(logo.get_attribute('class'))
print(logo.get_attribute('id'))
time.sleep(2)
browser.quit()

输出如下:

<selenium.webdriver.remote.webelement.WebElement (session="b72dbd6906debbca7d0b49ab6e064d92", element="0.511689875475734-1")>
zu-top-link-logo
zh-top-link-logo

获取文本值
text

from selenium import webdriver
browser = webdriver.Chrome()
browser.get("http://www.zhihu.com/explore")
logo = browser.find_element_by_css_selector('.zu-top-link-logo')
print(logo)
print(logo.text)

输出如下:

<selenium.webdriver.remote.webelement.WebElement (session="ce8814d69f8e1291c88ce6f76b6050a2", element="0.9868611170776878-1")>
知乎

获取ID,位置,标签名
id
location
tag_name
size

from selenium import webdriver

browser = webdriver.Chrome()
url = 'https://www.zhihu.com/explore'
browser.get(url)
input = browser.find_element_by_css_selector('.zu-top-add-question')
print(input.id)
print(input.location)
print(input.tag_name)
print(input.size)

输出如下:

0.022998219885927318-1
{'x': 759, 'y': 7}
button
{'height': 32, 'width': 66}
selenium详细讲解 selenium 截屏与获取一、截屏与获取1.截屏2.获取2.1获取cookies值2.2获取当前页面返回代码2.3获取当前页面url二、查找元素1.网页中套着另一个网页【豆瓣】2.通过标签的ID获取标签【重点】3.通过标签id 获取多个标签列表,后面一样4.通过标签的class属性值获取标签5.通过xpath获取【重点】6.根据标签的文本获取元素列表,精确定位6.1.获取属性值7.根据标签包含的文本获取元素列表,模糊定位 [加s可以查多个但是列表需遍历才能使用]8.根据标签名获取元素列表 【不常用】 切记 阅读详情

相关推荐

mmsegmentation教程1:自定义数据集、config文件修改、训练教程

mmseg使用教程

weixin_42748439的博客 2万+

selenium.webdriver.remote.webelement.WebElement解析

基于Python语言,selenium用法写自动化脚本时,打印文本出现了一下信息: <selenium.webdriver.remote.webelement.WebElement (session=“8438b95244fba6444aafaf5a5cbe73f9”, element=“5bf8fa52-6761-4522-b894-314823081c32”)> 请求代码如下 import time from selenium import webdriver driver = webdr

蕴奥的博客 2万+

mac 安装selenium 教程及简单实用

一、下载与安装 命令: pip install selenium 安装成功后会显示如下图: 二、安装chrome驱动 1、驱动的下载 驱动下载地址:http://docs.seleniumhq.org/download/选择对应系统的浏览器驱动 或者直接到https://sites.google.com/a/chromium.org/chromedriver/下载最新版mac chrome驱动(需翻墙); 当然驱动和浏览器的版本一定要匹配上,否则会报一下错误: 2、驱动...

1、测试博主技术知识分享 2、pos行业知识技术分享 3、java后端技术知识分享 4、嵌入式技术知识分享 5、运维部署相关知识分享 3600

Selenium的使用

Selenium 是一个自动化测试工具,利用它可以驱动浏览器执行特定的动作,如点击、下拉等操作,同时还可以获取浏览器当前呈现的页面的源代码,做到可见即可爬。对于一些 JavaScript 动态渲染的页面来说,此种抓取方式非常有效。本节中,就让我们来感受一下它的强大之处吧。 1. 准备工作 本节以 Chrome 为例来讲解 Selenium 的用法。在开始之前,请确保已经正确安装好了 Chrome 浏览器并配置好了 ChromeDriver。另外,还需要正确安装好 PythonSelenium 库,详细

极客神殿 1279

selenium中的WebElement对象的属性与操作

print(element.tag_name) 下面同理。get_attribute('type')的作用就是获取对应元素中的属性值,框号中的属性可更改。tag_name的作用就是获取对应元素的标签名。parent的作用就是获取对应元素的父级。text的作用就是获取当前元素的文本内容。这种方法在4版本后被弃用。

weixin_53067863的博客 1111

selenium简单实用以及实战

目录前言一、为什么要使用selenium1-1、什么是selenium?1-2、它的优点?1-3、它的缺点?二、配置、操作selenium的方法2-1、安装selenium的前置操作2-2、安装selenium并且测试是否安装成功。三、selenium基本API总结 前言 前言 一、为什么要使用selenium 1-1、什么是selenium? 1、Selenium最初是一个Web的自动化测试工具,开始是为了网站的自动化测试开发的。 2、它可以按照指定的命令自动操作。可以直接运行在浏览器上,支持所有的

艰难困苦,玉汝于成。 5300

selenium简单实用

1、测试文本输入框  假设页面上有一个文本输入框,我们要测试的内容是 在其中输入一些内容,然后点击一个按钮,看看页面的是否跳转到需要的页面。  1. public void test1() {  2.  3. selenium.open("http://xxx.xxx.xxx/yyy");  4.  5. selenium.type("xpath=//input[@name='

1404

Selenium的安装和简单实用——PhantomJS安装

简介 Selenium是一个用于Web应用程序测试的工具。 Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Firefox,Safari,Chrome,Opera等。 这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检...

weixin_30485799的博客 150

认知实习第五天之selenium简单实用

一个简单selenium简单使用 from selenium import webdriver # 导入键盘Keys from selenium.webdriver.common.keys import Keys import time driver = webdriver.Chrome() # 检测代码块 try: # 隐式等待,等待标签加载 d...

weixin_30897079的博客 86

RF第二讲--Selenium2Library库的简单实用

现在对于RF的应用方法已经有很多书介绍了,网上也可以搜到免费的电子书可以学习。今天就简单和大家介绍一下RF的用法之一,就是基于Selenium2Library库的使用。 1、首先需要安装Selenium2Library库,这时候就要用到之前说的pip啦~~~打开运行,输入pip install robotframework-selenium2library 回车后就会自动安装了。 ...

weixin_30768175的博客 252

你不可不知道的Selenium 8种元素定位方法,简单实用

自动化最基础的就属于定位元素了,元素不会定位,基本上已经团灭了,就不用再去考虑什么自动化了。

软件自动化测试技术交流、资源分享 534

Selenium-webdriver Chrome实战

什么是selenium selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。 Seleni

ainivip的专栏 3527

Selenium库原代码WebDriverWebElement方法属性总结

Selenium WebDriver 实现的源代码提供的一些基本操作和功能,这些功能可以帮助用户进行自动化测试、网页操作或数据采集等任务。

book_dw5189的博客 2638

Selenium WebElement: Selenium 中的页面元素以及常用的属性和方法

Selenium 中通过 find_element 获取到的页面元素的常用属性,以及操作方法

还是应该要努力的(12点前睡觉!!!!! 4349

selenium自动化测试-元素定位及元素操作

这是继续https://blog.csdn.net/u013454322/article/details/128399381的延续,后面会逐步完成selenium系列

小衫虎 1197

爬虫06 —— selenium

Selenium 一、基本使用 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDrive

干燥的空气,湿润的呼吸 2123

Selenium WebDriver 中用于查找网页元素的两个方法

这两个方法可以根据不同的定位策略(如 By.ID、By.CLASS_NAME、By.XPATH 等)和对应的定位器条件来定位页面上的元素。 ​

book_dw5189的博客 2611

YOLOv8改进 | Conv篇:基于FasterBlock与C2f结构的二次创新,参数量下降70万【附保姆级代码】

通过引入FasterBlock二次创新C2f结构,我们成功地对YOLOv8模型进行了优化,显著降低了其参数量,并提升了推理速度,而精度保持不变甚至有所提升。该模型在多个实际应用场景中展现出了优异的性能,尤其是在嵌入式设备、移动端和自动驾驶等领域,具有广泛的应用潜力。未来的研究将进一步优化模型结构,探索更多的应用场景,为目标检测技术的发展做出贡献。

一键难忘的博客 3173

GPS-RTK技术在某铁路专用线工程的应用.pdf

GPS-RTK技术在某铁路专用线工程的应用.pdf

上一篇: selenium自动化测试环境搭建及启动safair浏览器(Mac)
隴门朕
博客等级 码龄7年 1粉丝 19原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值