其他教程

其他教程

Products

当前位置:首页 > 其他教程 >

selenium 正则表达式不知哪里有问题,运行无反应

GG网络技术分享 2025-03-18 16:15 2


问题描述:

from selenium import webdriver
import re

def juchao(keyword):

browser = webdriver.Chrome()

url = \"http://www.cninfo.com.cn/new/fulltextSearch?notautosubmit=&keyWord=\" + keyword

browser.get(url)

data = browser.page_source

# print(data)

browser.quit()

p_title = \'<span title class=\"r-title\">(.*?)</span>\'

p_href = \'<div class=\"cell\"><a target=\"_blank\" href=\"(.*?)\" data-id=.*?</div>\'

p_date = \'<span class=\"time\">(.*?)</span>\'

title = re.findall(p_title, data, re.S)

href = re.findall(p_href, data)

date = re.findall(p_date, data, re.S)

for i in range(len(title)):

title[i] = re.sub(r\'<.*?>\', \'\', title[i])

href[i] = re.sub(\'amp;\', \'\', href[i])

date[i] = date[i].split(\' \')[0]

print(str(i + 1) + \'.\' + title[i] + \'-\' + date[i])

print(href[i])

keywords = [\'理财\', \'现金管理\', \'纾困\']

for i in keywords:

juchao(i)

网友观点:

  1. 用chrome浏览器仔细审核一下页面元素,看看就知道为什么匹配不到了
  2. 你这里是用re去找元素,干嘛不用selenium的fine_element_byxpath函数去找?比正则不靠谱些吗?

现在大家都学习了selenium2.0还是selenium3.0?

Selenium是一个开源、免费、支持多操作系统、多浏览器和多编程语言,用于web应用程序自动化的工具,在软件自动化测试中应用尤其较多,基本上如果有使用Selenium几年经验的软件测试从业者,对Selenium2和Selenium3都会有一定了解和学习的,而作为10年的测试老兵,经历过Selenium 1、2、3,目前已经到Selenium 4.0拉。实际上Selenium2和Selenium3两者区别并不大,比较被大家熟知的区别有:

selenium 2.0使用火狐47以下的版本来完成web自动化测试则不需要驱动包
selenium 3.0中要完成Firefox浏览的web自动化需要使用驱动包
selenium 3.0有了更多的新特性,尤其是对Edge和Safari原生驱动的支持,Edge驱动由MS提供而safari原生驱动由Apple提供

那么如果我们现在学习Selenium,还有必要学习Selenium 2.0吗?可以思考如下几个问题:

  1. 很多遗留项目兼容版本比较低的浏览器,比如很多银行项目
  2. Selenium 2.0和Selenium 3.0差别并不大,对于自动化测试人员,基本都是基于WebDriver api进行测试脚本的编写,学习成本并不高
  3. 面试官:你简历写的自动化测试工作8年了,怎么只了解Selenium 3.0?

因此,即使大家上来就学习最主流的Selenium3.0,也有必要对Selenium2.0有一定的了解

下面就自己多年的自动化测试和Selenium使用经验,给大家详细说一下Selenium的学习路径,先上干货:<<全网最全 Selenium 相关资源汇总>>,这是本人多年通过多年学习系统性整理出Selenium使用过程中必知必会的资源,涉及Selenium API、浏览器、驱动、自动化环境、持续集成、无需科学上网的镜像地址等相关资源,请务必务必务必收藏!

如果你需要更多Selenium相关学习资源,也欢迎私我

selenium 官网

  • selenium 官网:
    • https://docs.seleniumhq.org
  • selenium github:
    • https://github.com/SeleniumHQ/selenium

文档- API 文档:

  • Java:https://seleniumhq.github.io/selenium/docs/api/java/index.html
  • Python: https://seleniumhq.github.io/selenium/docs/api/py/
  • JavaScript:https://seleniumhq.github.io/selenium/docs/api/javascript/
  • Ruby:https://seleniumhq.github.io/selenium/docs/api/rb/
  • C#:https://seleniumhq.github.io/selenium/docs/api/dotnet/
  • selenium 学习文档:
    • 英文:https://docs.seleniumhq.org/docs/
    • 中文文档:https://www.seleniumhq.org/docs/cn/index.jsp
    • 易百教程:https://www.yiibai.com/selenium
  • W3C WebDriver 协议标准:
    • https://w3c.github.io/webdriver/

selenium 下载:

  • 官网下载页面:https://docs.seleniumhq.org/download/
  • release 版本下载:https://selenium-release.storage.googleapis.com/index.html
  • 国内-淘宝镜像(推荐):https://npm.taobao.org/mirrors/selenium
  • 国内-华为云镜像(推荐):https://repo.huaweicloud.com/selenium/

主流浏览器驱动下载

  • IEDriverServer:
    • https://selenium-release.storage.googleapis.com/index.html
  • ChromeDriver
    • 官网:https://chromedriver.storage.googleapis.com/index.html
    • 国内-淘宝镜像:http://npm.taobao.org/mirrors/chromedriver
    • 国内-华为云镜像:https://repo.huaweicloud.com/chromedriver/
    • Change log:https://sites.google.com/a/chromium.org/chromedriver/downloads
  • OperaDriver
    • 官网:https://github.com/operasoftware/operachromiumdriver/releases
    • 国内-淘宝镜像:http://npm.taobao.org/mirrors/operadriver
    • 国内-华为云镜像:https://repo.huaweicloud.com/operadriver/
  • geckodriver 驱动
    • 官方:https://github.com/mozilla/geckodriver/releases/tag/v0.24.0
    • 国内-华为云镜像:https://repo.huaweicloud.com/geckodriver/
    • Change log:https://github.com/mozilla/geckodriver/blob/release/CHANGES.md
  • Microsoft WebDriver(Edge 浏览器):
    • https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
  • Safari
    • https://webkit.org/blog/6900/webdriver-support-in-safari-10/

Selenium IDE

  • selenium IDE 文档:
    • 英文:https://docs.seleniumhq.org/selenium-ide/
    • 中文:http://selenium.wangding.in/getting-started.html
  • selenium IDE 插件下载:
    • 火狐:https://addons.mozilla.org/en-GB/firefox/addon/selenium-ide/
    • Chrome:https://chrome.google.com/webstore/detail/selenium-ide/mooikfkahbdckldjjndioackbalphokd

Selenium Grid

  • selenium Grid 文档:
    • https://github.com/SeleniumHQ/selenium/wiki/Grid2

浏览器下载:

  • Chrome:
    • http://www.chromedownloads.net/chrome64win/
  • Firefox:
    • http://ftp.mozilla.org/pub/firefox/releases/

其他

JDK

  • 华为云镜像:https://repo.huaweicloud.com/java/jdk/

Eclipse

  • 清华大学开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn/eclipse/technology/epp/downloads/release/

Maven 坐标

  • maven 中央仓库:https://mvnrepository.com/
  • 华为云:https://mirrors.huaweicloud.com/search/maven?q=&license=&date=all

Jenkins

  • 官网:https://www.jenkins.io/download/
  • 安装版下载镜像:http://mirrors.jenkins-ci.org/windows/
  • 华为云:https://repo.huaweicloud.com/jenkins/

Tomcat

  • 国内镜像:https://mirrors.cnnic.cn/apache/tomcat/

为什么学习Selenium?

下面我画了一个图,大家看了就明白了:

因为Selenium是一个开源、免费、支持多操作系统、多浏览器和多编程语言,用于web应用程序测试的工具。Selenium有如下特点:

  1. 它可用于Web应用程序测试的工具
  2. Selenium是开源并且免费的
  3. Selenium 测试直接在浏览器中运行,就像真实用户所做的一样
  4. 覆盖IE、Chrome、FireFox、Safari等主流浏览器。通过在不同浏览器中运行测试,更容易发现浏览器的不兼容性。
  5. 支持Java、Python、Net、Perl等编程语言进行自动化测试脚本编写
  6. 通过编写模仿用户操作的 Selenium 测试脚本,可以从终端用户的角度来测试应用程序

选择QTP还是Selenium?

Selenium这是目前市面上主流的web自动化测试工具。除了Selenium我们还会经常听到一个叫做QTP的工具,那为啥不选择QTP呢?

先说QTP:QTP是Quick Test Professional的简称,是一种自动测试工具。使用QTP的目的是想用它来执行重复的自动化测试,主要是用于回归测试和测试同一软件的新版本。因此你在测试前要考虑好如何对应用程序进行测试,例如要测试哪些功能、操作步骤、输入数据和期望的输出数据等。

QTP的缺点:

1、正版需要收费,这对企业而言直接增加了测试成本。

2、如果需要扩展功能,你需要会VBScript,然后编写测试脚本,这本身就是一个门槛了。VBScript本身并不是主流的编程语言,有这功夫还不如学习Java和Python,相对性价比还会更高点。

3、QTP是一个工具,是别人写好的工具,我们必须在其规则下进行使用,扩展性较差

4、QTP作为工具,使用门槛是很低的,因为工具都是傻瓜化的,你能学会大家都能学会。对于从业人员而言,竞争力提高有限。

再说回Selenium,Selenium翻译过来时化学元素“硒”,为啥叫“硒”呢,其实也是有讲究的。QTP的是Mercury公司研发的,Mercury翻译过来是“汞”,在化学里边,硒和汞是有拮抗反应的。 硒(Se)是生物所必需的一种微量元素。许多试验表明,硒在一定程度上可以保护动物免受或少受汞(Hg)的危害。换句话收,Selenium认为QTP就是“汞”,又是收费又是扩展性差各种缺点,所以我Selenium就是要来抵抗你的。

Selenium的优点:

1、免费开源,这个就不说了,是个企业都喜欢,既节省了成本,又可放心使用不用担心版权问题。

2、Selenium 测试直接在浏览器中运行,就像真实用户所做的一样,通过编写模仿用户操作的 Selenium 测试脚本,可以从终端用户的角度来测试应用程序

3、覆盖IE、Chrome、FireFox、Safari等主流浏览器。通过在不同浏览器中运行测试,更容易发现浏览器的不兼容性。

4、支持Java、Python、Net、Perl、JavaScript、PHP等编程语言进行自动化测试脚本编写,覆盖的编程语言如此之广,一定程度上让Selenium更加的普及和主流,到一家新的企业做web自动化测试,大概率能碰上Selenium。

如何学习Selenium

测试人员学习Selenium主要是为了进行web自动化测试,虽然Selenium中有一个傻瓜话的自动化工具Selenium IDE,但这玩意局限性太大,没有啥含金量,作为一个合格自动化测试工程师,最终一定会采用后端语言来编写自动化脚本进行自动化测试,这也是目前企业中最主流的方式,从编程语言出发,自动化测试工程师有两个方向:一个是Python自动化测试工程师,一个Java自动化测试工程师,至于选择Java还是Python,可以参考我回答过的这个问题:

从入门角度,Python相对容易一些,因此这里以Python自动化测试为例,详细说明该阶段需要掌握的自动化测试技能。

Python基础与编程进阶

需要学习以下Python知识,大概需要一个月左右时间:

1、Python环境搭建、pycharm安装
2、变量、数据类型、运算符、列表List、元祖tuple、字典dict
3、控制结构:if、for循环、while循环
4、函数、内置函数
5、文件操作、异常处理
6、类与对象
7、【进阶】函数作用域、断言
8、【进阶】面向对象进阶:继承、自省
9、【进阶】装饰器、生成器、工程与模块
10、【进阶】代码调试、算法

python语法掌握了,有必要进行一些简单的项目实战

1、excel的读取写入
2、pymysql数据库的实战:增删改查、事务处理、游标与链接
3、YAML配置、logging日志
4、unittest、pytest单元测试框架
5、测试报告、多线程执行
6、DDT数据驱动、正则表达式

上面的阶段学完后,你将:

1、系统掌握python的编程思维
2、熟练使用企业流行的自动化框架
3、掌握数据库驱动等自动化测试思维
4、熟练运用unittest和pytest单元测试框架
5、初步掌握自研成熟自动化框架的实现和封装细节

有了编程语言的基础,下面就可以学习web自动化测试了。

首先我们需要对网页结构有一定的了解,然后才能进行元素的定位与操作,因此需要学习一些前端知识,8大元素定位方式及特殊场景处理。

1、html、JavaScript、css入门
2、Selenium原理、Selenium webdriver环境搭建
3、8大元素定位方式、定位辅助工具
4、XPath相对、绝对定位方式
5、常用等待方式
6、弹框处理、下拉框处理、iframe切换、上传操作、js执行

有了这些自动化测试的方法手段,下面你可以找一个web项目来进行自动化测试实战了,将各种自动化方法和思想,封装并整合成一个高可用高扩展性的接口自动化框架!这才是自动化测试中的精华所在,也是你能和其他自动化测试人员拉开差距的必备技能,基本上会编写自动化框架的自动化测试工程师在一线城市平均薪资会在15K左右。

下面是框架编写会涉及到的一些技能点:

最后再多说了一句,工具无好坏、版本无优劣,不管是白猫黑猫,抓到老鼠就是好猫,任何一个工具和版本存在即为合理,作为一个技术人员,对各类型工具,对各个版本都能有一定了解才是我们应有的态度,唯有这样,才能成为一个到任何公司、任何项目都抢手的复合型人才。

如果你对Selenium学习还有其他疑问,欢迎私我,加油!

文末福利

Python 和Java 哪个更适合做自动化测试?

零基础转行软件测试是报班还是自学好?

女生学习软件测试,是报培训班还是自学好呢?

27岁了,目前从事软件测试,听一些大神说测试前途是IT里最差的,是这样吗?

请问,软件测试中,购物车的测试点有哪些?

转行软件测试,报培训班3个月出来就是高薪工作,靠谱吗?

标签:

提交需求或反馈

Demand feedback