百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

selenium系列教程|2.python自动化脚本解析及8大元素定位

myzbx 2025-02-20 17:01 118 浏览

python 穿上 seleniumwebdriver 是多么的性感

#coding = utf-8 from selenium import webdriver

browser = webdriver.Firefox()

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

browser.find_element_by_id("kw").send_keys("selenium") browser.find_element_by_id("su").click()

browser.quit()

脚本解析

# coding = utf-8

可加可不加,开发人员喜欢加一下,防止乱码嘛。

from selenium import webdriver

要想使用 selenium 的 webdriver 里的函数,首先把包导进来嘛

browser = webdriver.Firefox()

我们需要操控哪个浏览器呢?Firefox ,当然也可以换成 Ie 或 Chrome

browser 可以随便取,但后面要用它操纵各种函数执行。

browser.find_element_by_id("kw").send_keys("selenium")

一个控件有若干属性 id 、name、(也可以用其它方式定位),百度输入框的 id 叫 kw , 我要在输入框里输入 selenium 。多自然语言呀!

browser.find_element_by_id("su").click()

搜索的按钮的 id 叫 su ,我需要点一下按钮( click() ) 。

browser.quit()

退出并关闭窗口的每一个相关的驱动程序,有洁癖用这个。

browser.close()

关闭当前窗口 ,用哪个看你的需求了。

元素的定位

对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象。 一个对象就是一个人一样,他会有各种的特征(属性),如比我们可以通过一个人的身 份证号,姓名,或者他住在哪个街道、楼层、门牌找到这个人。

那么一个对象也有类似的属性,我们可以通过这个属性找到这对象。

webdriver 提供了一系列的对象定位方法,常用的有以下几种:

·id·name·classname.linktext·partiallinktext·tagname·xpath·css selector

我们可以看到,一个百度的输入框,可以用这么用种方式去定位。

maxlength="100" name="wd"

autocomplete="off">

#coding=utf-8 from selenium import webdriver

browser =webdriver.Firefox()

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

#百度输入框的定位方式#

#通过id方式定位

browser.find_element_by_id("kw").send_keys("selenium")

#通过name方式定位

browser.find_element_by_name("wd").send_keys("selenium")

#通过tag name方式定位

browser.find_element_by_tag_name("input").send_keys("selenium")

#通过class name 方式定位

browser.find_element_by_class_name("s_ipt").send_keys("selenium")

#通过CSS方式定位

browser.find_element_by_css_selector("#kw").send_keys("selenium")

#通过xphan方式定位

browser.find_element_by_xpath("//input[@id='kw']").send_keys("selenium")

#browser.find_element_by_id("su").click() time.sleep(3) browser.quit()

id 和 name 定位

id 和 name 是我们最最常用的定位方式,因为大多数控件都有这两个属性,而且 在对控件的 id 和 name 命名时一般使其有意义也会取不同的名字。通过这两个属性使我 们找一个页面上的属性变得相当容易

我们通过前端工具,找到了百度输入框的属性信息,如下:

maxlength="100" name="wd"

autocomplete="off">

id=”kw”

通过 find_element_by_id("kw") 函数就是捕获到百度输入框

name=”wd”

通过 find_element_by_name("wd")函数同样也可以捕获百度输入框

tagname 和 classname 定位

从上面的百度输入框的属性信息中,我们看到,不单单只有 id 和 name 两个属性, 比如 class 和 tagname(标签名)

就是一个标签的名字,可以通过

find_element_by_tag_name("input")函数来定位。

class="s_ipt"

通过
find_element_by_class_name("s_ipt")

函数捕获百度输入框。

CSS 定位

CSS(Cascading Style Sheets)是一种语言,它被用来描述 HTML 和 XML 文档的表现。 CSS 使用选择器来为页面元素绑定属性。这些选择器可以被 selenium 用作另外的定位策 略。

CSS 的比较灵活可以选择控件的任意属性,上面的例子中:

find_element_by_css_selector("#kw")

通过
find_element_by_css_selector( )函数,选择取百度输入框的 id 属性来定义

也可以取 name 属性

新 闻

driver.find_element_by_css_selector("a[name=\"tj_news\"]").click()

可以取 title 属性

href="http://www.baidu.com/">网页

driver.find_element_by_css_selector("a[title=\"web\"]").click()

也可以是取

driver.find_element_by_css_selector("a.RecycleBin").click()

虽然我也没全部理解 CSS 的定位,但是看上去应该是一种非常灵活和牛 X 的定位方式

XPath 定位

什么是 XPath:

selenium 中被误解的 XPath :

XPath 是一种在 XML 文档中定位元素的语言。因为 HTML 可以看做 XML 的一种实现, 所以 selenium 用户可是使用这种强大语言在 web 应用中定位元素。

XPath 扩展了上面 id 和 name 定位方式,提供了很多种可能性,比如定位页面上的 第三个多选框。

xpath:attributer (属性)

driver.find_element_by_xpath("//input[@id='kw']").send_keys("selenium") #input

标签下id =kw的元素

xpath:idRelative(id相关性)

driver.find_element_by_xpath("//div[@id='fm']/form/span/input").send_keys("selenium")

#在/form/span/input 层级标签下有个div标签的id=fm的元素


driver.find_element_by_xpath("//tr[@id='check']/td[2]").click() # id为'check' 的tr ,

定位它里面的第2个td

xpath:position (位置)

driver.find_element_by_xpath("//input").send_keys("selenium")driver.find_element_by_xpath("//tr[7]/td[2]").click()

#第7个tr 里面的第2个td

xpath: href (水平参考)


driver.find_element_by_xpath("//a[contains(text(),'网页')]").click() #在a标签下有个文本(text)包含(contains)'网页' 的元素

xpath:linkdriver.find_element_by_xpath

("//a[@href='http://www.baidu.com/']").click()

#有个叫a的标签,他有个链接

href='http://www.baidu.com/的元素

link 定位

有时候不是一个输入框也不是一个按钮,而是一个文字链接,

我们可以通过 link #coding=utf-8

from selenium import webdriver browser = webdriver.Firefox()

browser.get("http://www.baidu.com")
browser.find_element_by_link_text("贴 吧").click() browser.quit()

一般一个页面上不会出现相同的文件链接,通过文字链接来定位也是一种简单有效 的定位方式。

Partiallinktext 定位

通过部分链接定位,这个有时候也会用到,我还没有想到很好的用处。拿上面的例 子,我可以只用链接的一部分文字进行匹配:


browser.find_element_by_partial_link_text("贴").click() #通过


find_element_by_partial_link_text() 函数,我只用了“贴”字,脚本一样找到了"贴 吧 " 的链接。


本系列教程未selenium+Python方向的入门级教程,欢迎大家评论反馈。

西边人细说测试,

头条号(软件测试资源站)作者,程序爬虫获取国内外测试资源分享给自学爱好者。

今日头条关注后,私信回复如下关键词获取大量打包资料下载。

测试资料、工具、Python、自动化测试报告、梯子 等

相关推荐

如何设计一个优秀的电子商务产品详情页

加入人人都是产品经理【起点学院】产品经理实战训练营,BAT产品总监手把手带你学产品电子商务网站的产品详情页面无疑是设计师和开发人员关注的最重要的网页之一。产品详情页面是客户作出“加入购物车”决定的页面...

怎么在JS中使用Ajax进行异步请求?

大家好,今天我来分享一项JavaScript的实战技巧,即如何在JS中使用Ajax进行异步请求,让你的网页速度瞬间提升。Ajax是一种在不刷新整个网页的情况下与服务器进行数据交互的技术,可以实现异步加...

中小企业如何组建,管理团队_中小企业应当如何开展组织结构设计变革

前言写了太多关于产品的东西觉得应该换换口味.从码农到架构师,从前端到平面再到UI、UE,最后走向了产品这条不归路,其实以前一直再给你们讲.产品经理跟项目经理区别没有特别大,两个岗位之间有很...

前端监控 SDK 开发分享_前端监控系统 开源

一、前言随着前端的发展和被重视,慢慢的行业内对于前端监控系统的重视程度也在增加。这里不对为什么需要监控再做解释。那我们先直接说说需求。对于中小型公司来说,可以直接使用三方的监控,比如自己搭建一套免费的...

Ajax 会被 fetch 取代吗?Axios 怎么办?

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!今天给大家带来的主题是ajax、fetch...

前端面试题《AJAX》_前端面试ajax考点汇总

1.什么是ajax?ajax作用是什么?AJAX=异步JavaScript和XML。AJAX是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX可以使网页实...

Ajax 详细介绍_ajax

1、ajax是什么?asynchronousjavascriptandxml:异步的javascript和xml。ajax是用来改善用户体验的一种技术,其本质是利用浏览器内置的一个特殊的...

6款可替代dreamweaver的工具_替代powerdesigner的工具

dreamweaver对一个web前端工作者来说,再熟悉不过了,像我07年接触web前端开发就是用的dreamweaver,一直用到现在,身边的朋友有跟我推荐过各种更好用的可替代dreamweaver...

我敢保证,全网没有再比这更详细的Java知识点总结了,送你啊

接下来你看到的将是全网最详细的Java知识点总结,全文分为三大部分:Java基础、Java框架、Java+云数据小编将为大家仔细讲解每大部分里面的详细知识点,别眨眼,从小白到大佬、零基础到精通,你绝...

福斯《死侍》发布新剧照 "小贱贱"韦德被改造前造型曝光

时光网讯福斯出品的科幻片《死侍》今天发布新剧照,其中一张是较为罕见的死侍在被改造之前的剧照,其余两张剧照都是死侍在执行任务中的状态。据外媒推测,片方此时发布剧照,预计是为了给不久之后影片发布首款正式预...

2021年超详细的java学习路线总结—纯干货分享

本文整理了java开发的学习路线和相关的学习资源,非常适合零基础入门java的同学,希望大家在学习的时候,能够节省时间。纯干货,良心推荐!第一阶段:Java基础重点知识点:数据类型、核心语法、面向对象...

不用海淘,真黑五来到你身边:亚马逊15件热卖爆款推荐!

Fujifilm富士instaxMini8小黄人拍立得相机(黄色/蓝色)扫二维码进入购物页面黑五是入手一个轻巧可爱的拍立得相机的好时机,此款是mini8的小黄人特别版,除了颜色涂装成小黄人...

2025 年 Python 爬虫四大前沿技术:从异步到 AI

作为互联网大厂的后端Python爬虫开发,你是否也曾遇到过这些痛点:面对海量目标URL,单线程爬虫爬取一周还没完成任务;动态渲染的SPA页面,requests库返回的全是空白代码;好不容易...

最贱超级英雄《死侍》来了!_死侍超燃

死侍Deadpool(2016)导演:蒂姆·米勒编剧:略特·里斯/保罗·沃尼克主演:瑞恩·雷诺兹/莫蕾娜·巴卡林/吉娜·卡拉诺/艾德·斯克林/T·J·米勒类型:动作/...

停止javascript的ajax请求,取消axios请求,取消reactfetch请求

一、Ajax原生里可以通过XMLHttpRequest对象上的abort方法来中断ajax。注意abort方法不能阻止向服务器发送请求,只能停止当前ajax请求。停止javascript的ajax请求...