perl selenium操控浏览器填写表单完成自动化测试

简介:
很多时候在做测试的人员需要去测试开发人员的新项目,传统的操作是打开浏览器点击各个地方看操作是否流畅,是否会报BUG。每天都会重复的操作,我想不管是谁都不喜欢做这些重复的事情吧。这时候如果有一个软件能够自动化完成重复性的操作,节约了大量的人力物力。这次就来说说关于selenium的那些事,第一次直接把效果展现给大家,这样就会有学习的兴趣。
一、下载所需要的软件
这里说一下,我所在的平台是win。

 
1.selenium server,selenium服务端,用于接收脚本发送的指令,传达给浏览器。
2.jdk,这个不多说,java环境
http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html
3.tesseract,用于解析填写表单时候的验证码(这款软件以前的HP的,现在开源了,可以去百度一下他的历史)

4.perl,程序运行环境
5.ImageMagick,用于处理图片,这里我用于裁切截图,提取验证码。
安装方法
6.Test::WWW::Selenium,perl所需要的模块。
安装方法
ppm-shell install Test::WWW::Selenium
7.火狐浏览器,由于selenium的限制,需要版本控制在15以下。
二、
code:
 

    
    
  1. #!/usr/bin/perl; 
  2. use strict; 
  3. use warnings; 
  4. use Data::Dumper; 
  5. use Time::HiRes qw(sleep); 
  6. use Test::WWW::Selenium; 
  7. use Test::More "no_plan"
  8. use Test::Exception; 
  9. use  encoding "utf-8"
  10. use  Image::Magick; 
  11. use warnings; 
  12. my $verify ; 
  13. my $f1; 
  14. sub Magick{   #裁切图片 
  15.     my ($x,$y)=@_;  
  16.     my($image, $p); 
  17.     $image = Image::Magick->new; 
  18.     $p = $image->Read('c.png'); 
  19.     $p = $image->Crop(geometry=>"60x30+$x+$y"); #裁切大小,以右上为起点开始裁切 
  20.     warn "$p" if "$p"
  21.     $p = $image->Write('x.png'); 
  22.     warn "$p" if "$p"
  23.     my $tesseract_soft_path = 'c:/Program Files/Tesseract-OCR/tesseract.exe';  #这里是调用ocr解析图片 
  24.     my $png_path = 'f:/perl/cu'
  25.     my $tesseract=system ("$tesseract_soft_path" ,"$png_path/x.png","$png_path/x","-l"); #处理图片,默认处理为txt文件 
  26. unless($tesseract){ 
  27.     open FH,"$png_path/x.txt" or die "$!"
  28.     while(<FH>){ 
  29.         /(\d{4})(?{$verify=$1})/; 
  30.     } 
  31.     close FH; 
  32. return 1; 
  33. my $sel = Test::WWW::Selenium->new( host => "localhost",   #实例化浏览器 
  34.                                     port => 4444,  
  35.                                     browser => "*chrome",  
  36.                                     browser_url => "http://www.mchina.cn/searchkeyword.html" 
  37.                                     ); 
  38. open FA,"uid.txt" or die "$!"
  39. while(<FA>){ 
  40.     chomp; 
  41.     my $uid =$_; 
  42. while(1 and sleep 4){ 
  43.     $sel->open_ok("/searchkeyword.html"); 
  44. $sel->wait_for_page_to_load_ok("30000"); 
  45. $sel->capture_entire_page_screenshot('f:\perl\cu\c.png','background=#CCFFDD');  #将页面制作成png图片 
  46. Magick("660","400"); #裁切图片 
  47. $f1=$sel->get_html_source; 
  48.  if($f1 =~ /<div[^>]+center">\s*<font[^>]+red">[\s\S]+?<li><span>.*?<\/span><\/li>/){  #如果验证码不配对,用正则判断,需要裁切的地方需要变换 
  49.       Magick("654","420");    
  50.  } 
  51. $sel->wait_for_page_to_load_ok("30000"); 
  52. if (defined $verify){ 
  53. $sel->type_ok("id=keyword""$uid"); 
  54. $sel->type_ok("id=confirmcodekeyword""$verify"); 
  55. $sel->click_ok("css=input.btn"); 
  56. $sel->wait_for_page_to_load_ok("60000"); 
  57. undef($verify); 
  58. my $err = $sel->get_html_source(); 
  59. last unless $err =~ /<div[^>]+center">\s*<font[^>]+red">[\s\S]+?<li><span>.*?<\/span><\/li>/; 
  60. $sel->open_ok("/searchkeyword.html"); 
  61. $sel->wait_for_page_to_load_ok("30000"); 
  62. $sel->refresh() ; 
  63.  my $frame = $sel->select_frame('//iframe'); 
  64. if(defined $frame){                #由于是frame构架的,返回的源码中是看不到所需信息的,需要用 select_frame定位    
  65. my $route= $sel->get_html_source(); 
  66. my @info; 
  67. if($route =~ /<div[^>]+searchkey">.*?\n.*?([^\s]+)[\s\S]+? 
  68.    <div[^>]+keystatus">\s*<font[^>]+>([^<]+)[\s\S]+?         
  69.    <div[^>]+regtime">(\S+)[\s\S]+? 
  70.    <div[^>]+registerNOforkey">\s*([^\s]*)/x){ 
  71.     my($name,$status,$regtime,$idnum); 
  72.     $name = $1;$status = $2;$regtime = $3 ;$idnum =$4||0; 
  73.     push @info ,$uid,$name,$status,$regtime,$idnum; 
  74. }else
  75.     if($route =~ /<font[^>]+red">\s*([^\s]+)/){  
  76.         push @info,$uid,$1}; 
  77. open FH,">>output.txt" or die "$!"
  78. print FH join("\t",@info); 
  79. print FH "\n"
  80. close FH; 
  81. close FA; 
  82. sleep 500; 
  83. $sel->stop(); 
三、解释
上面的一段code主要用于查询信息,自动填写验证码,把查询到的结果导入文本。
操作步骤
1.cmd进入刚才下载软件的目录。
执行java -jar selenium-server-standalone-2.25.0.jar(开启后不要关闭这个cmd窗口)
 

1.运行perl程序
F:\perl\cu>Perl-selenium.pl
 

 

运行过程

 










本文转自 mcshell 51CTO博客,原文链接:http://blog.51cto.com/mcshell/1099589,如需转载请自行联系原作者

目录
相关文章
|
3月前
|
Web App开发 人工智能 自然语言处理
Playwright MCP浏览器自动化指南
本文教你如何通过Playwright MCP让AI直接操作浏览器,自动运行和调试代码,无需手动切换界面。只需简单配置,即可用自然语言指挥AI完成页面操作、问题排查与自主修复,真正实现自动化高效开发。
|
3月前
|
人工智能 自然语言处理 监控
Browser Use:打造你的浏览器自动化助手
你是否曾希望用简单的一句话就能让浏览器自动填表、抓数据或做测试?Browser Use 让这成为现实。它结合了语言模型的智能和传统自动化的稳定,能听懂自然语言指令,自己规划步骤,还能应对网页变动和错误。无论是开发者还是普通用户,都能用它高效完成日常操作,省时省力。安装简单,写行指令就能马上体验。
|
5月前
|
Web App开发 存储 前端开发
Python+Selenium自动化爬取携程动态加载游记
Python+Selenium自动化爬取携程动态加载游记
|
2月前
|
数据采集 人工智能 自然语言处理
Playwright MCP 浏览器自动化框架全面解析
Playwright MCP是微软推出的开源项目,结合Playwright与MCP协议,让AI通过结构化数据直接操作浏览器。告别传统视觉识别,实现高效、精准的网页自动化,广泛应用于测试、爬虫、办公自动化等场景,大幅提升效率与可靠性。
|
3月前
|
人工智能 自然语言处理 监控
Playwright MCP浏览器自动化全攻略
Playwright MCP让AI通过自然语言操控浏览器,无需编程即可实现网页自动化。支持智能元素识别、多浏览器操作与动态交互,广泛应用于搜索、数据抓取、自动发布等场景,大幅提升效率,降低技术门槛,是浏览器自动化的新范式。
|
2月前
|
Web App开发 人工智能 JavaScript
入门指南:使用 Playwright MCP Server 为你的 AI Agent 赋予浏览器自动化能力
借助Playwright MCP Server,AI助手可实现网页自动操作:填表、抓数据、执行重复任务。通过MCP协议连接AI与浏览器,让AI从“能说”变为“会做”。支持主流浏览器,配置简单,助力打造智能数字助手。
|
3月前
|
人工智能 自然语言处理 监控
Browser Use 浏览器自动化 Agent:让浏览器自动为你工作
Browser Use是一款创新浏览器自动化框架,结合LLM智能与自动化技术,能理解自然语言指令,自主操作浏览器完成任务,如数据抓取、表单填写、自动化测试等。具备智能决策、自适应处理、自然语言交互和自我修正能力,简化复杂任务,提升效率。
|
7月前
|
数据采集 前端开发 JavaScript
深挖navigator.webdriver浏览器自动化检测的底层分析
本文详细讲解了如何通过技术手段破解浏览器 `navigator.webdriver` 检测,结合爬虫代理、多线程等策略,在豆瓣图书页面批量采集数据。具体包括:隐藏 Selenium 特征、配置代理突破 IP 限制、设置伪装用户、利用多线程提升效率。文章面向初学者,提供分步教程与示例代码,同时设有「陷阱警告」帮助规避常见问题。目标是从底层实现反检测,高效采集图书评分、简介、作者等信息,适合具备 Python 和 Selenium 基础的读者实践学习。
308 12
深挖navigator.webdriver浏览器自动化检测的底层分析
|
10月前
|
人工智能 自然语言处理 API
Cline:29.7K Star!一文详解VSCode最强开源AI编程搭子:一键生成代码+自动跑终端+操控浏览器...
Cline 是一款集成于 VSCode 的 AI 编程助手,支持多语言模型,实时检查语法错误,帮助开发者提高编程效率。通过智能化手段,Cline 可以生成代码、执行终端命令、调试 Web 应用,并扩展更多功能。
3670 73
|
8月前
|
Web App开发 前端开发 JavaScript
如何模拟浏览器行为获取网页中的隐藏表单数据?
如何模拟浏览器行为获取网页中的隐藏表单数据?