51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 15405|回复: 11
打印 上一主题 下一主题

[求助] selenium怎样获取动态图片验证码..急

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2012-4-20 11:00:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 愚人 于 2012-4-20 15:20 编辑

selenium怎样获取动态图片验证码?
在点开页面后,点用户名和密码后需要图片验证码?
我自动转换为C#后不知道要怎么写来验证验证码了
源码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Selenium;
using System.Threading;

namespace TestFor2012420
{
    public partial class Form1 : Form
    {

        private ISelenium selenium;
        private StringBuilder verificationErrors;
        
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            selenium = new DefaultSelenium("localhost", 4444, "*firefox", "http://mydiy.pconline.com.cn/");
            selenium.Start();
            verificationErrors = new StringBuilder();
            selenium.Open("/");
            selenium.Click("xpath=(//a[contains(text(),'选用')])[6]");
            selenium.Click("//span[@type='1']");
            selenium.Type("xpath=(//input[@name='product_query'])[2]", "华硕");
            selenium.Click("xpath=(//input[@name='search'])[2]");
            Thread.Sleep(3000);
            selenium.Click("link=下一页");
            Thread.Sleep(3000);
            selenium.Click("xpath=(//a[contains(text(),'选用')])[2]");
            Thread.Sleep(3000);
            selenium.Click("//span[@type='2']");
            Thread.Sleep(3000);
            selenium.Click("xpath=(//a[contains(text(),'选用')])[3]");
            Thread.Sleep(3000);
            selenium.Type("id=num_2", "2");
            Thread.Sleep(3000);
            selenium.Click("//span[@type='3']");
            Thread.Sleep(3000);
            selenium.Click("link=2");
            Thread.Sleep(3000);
            selenium.Click("link=3");
            Thread.Sleep(3000);
            selenium.Click("link=选用");
            Thread.Sleep(3000);
            selenium.Click("//span[@type='4']");
            Thread.Sleep(3000);
            selenium.Click("link=下一页");
            Thread.Sleep(3000);
            selenium.Click("xpath=(//a[contains(text(),'选用')])[5]");
            Thread.Sleep(3000);
            selenium.Click("//span[@type='5']");
            Thread.Sleep(3000);
            selenium.Click("link=2");
            Thread.Sleep(3000);
            selenium.Click("xpath=(//a[contains(text(),'选用')])[5]");
            Thread.Sleep(3000);
            selenium.Click("//span[@type='6']");
            Thread.Sleep(3000);
            selenium.Click("xpath=(//a[contains(text(),'选用')])[7]");
            Thread.Sleep(3000);
            selenium.Click("//span[@type='7']");
            Thread.Sleep(3000);
            selenium.Click("xpath=(//a[contains(text(),'选用')])[7]");
            Thread.Sleep(3000);
            selenium.Click("//span[@type='8']");
            Thread.Sleep(3000);
            selenium.Click("link=下一页");
            Thread.Sleep(5000);
            selenium.Click("link=下一页");
            Thread.Sleep(3000);
            selenium.Click("xpath=(//a[contains(text(),'选用')])[4]");
            Thread.Sleep(3000);
            selenium.Click("//span[@type='9']");
            Thread.Sleep(3000);
            selenium.Click("xpath=(//a[contains(text(),'选用')])[4]");
            Thread.Sleep(3000);
            selenium.Click("//span[@type='10']");
            Thread.Sleep(3000);
            selenium.Click("link=下一页");
            Thread.Sleep(3000);
            selenium.Click("link=下一页");
            Thread.Sleep(3000);
            selenium.Click("xpath=(//a[contains(text(),'选用')])[4]");
            Thread.Sleep(3000);
            selenium.Click("//span[@type='11']");
            Thread.Sleep(3000);
            selenium.Click("link=下一页");
            Thread.Sleep(3000);
            selenium.Click("link=下一页");
            Thread.Sleep(3000);
            selenium.Click("xpath=(//a[contains(text(),'选用')])[4]");
            Thread.Sleep(3000);
            selenium.Click("//span[@type='12']");
            Thread.Sleep(3000);
            selenium.Click("//span[@type='15']");
            Thread.Sleep(3000);
            selenium.Click("xpath=(//a[contains(text(),'选用')])[2]");
            Thread.Sleep(3000);
            selenium.Select("name=DiyType", "label=专业设计方案");
            Thread.Sleep(3000);
            selenium.Type("id=DiyTitle", "测试");
            Thread.Sleep(3000);
            selenium.Type("id=DiyComment", "此程序用于测试");
        }


    }

}
该怎么解决呢?说详细一点。。谢谢大家了
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2012-4-20 15:21:21 | 只看该作者
求助贴子请不要设置成付费主题,谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2012-4-20 16:51:42 | 只看该作者
验证码问题。。。
最简单的办法就是和开发商量,取消验证码,或做个万能验证码。。

至于别的方法。。同等大神支招。。
另外。。几乎每执行一句代码,等3秒。。。这效率是不是该考虑下了。。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2012-4-20 17:40:17 | 只看该作者
用了太多的clickandwait了……
一般是要求开发做个api接口,你可以直接调用,获取当前的验证码。要不然就让开发直接把验证码注释掉。这些事情应该在需求分析阶段就作为可测性需求向开发提出来,现在才注意这个问题,被动了不是。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 547 天

    连续签到: 1 天

    [LV.9]测试副司令

    5#
    发表于 2012-4-20 18:08:14 | 只看该作者
    回复 2# 愚人


        估计又一个认为是给别人钱的 哈哈
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2012-4-22 11:20:44 | 只看该作者
    回复 3# ryugun


    每一句加上等待是必须得。你要考虑网页加载时间,如果网页加载没有完毕的话。会出问题的。不信你可以试试
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
     楼主| 发表于 2012-4-22 11:21:41 | 只看该作者
    回复 4# 六月天


        确实很被动
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2012-5-25 23:04:23 | 只看该作者
    没有万能的验证码, 知道开发的code也不错, 回调了. 如果是第三方的, 那估计没什么辄了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2012-5-26 17:50:01 | 只看该作者
    回复 6# 喜欢猫的白菜
    等待页面加载是必须的。。但目前你这种写法很不好。。
    我记得selenium里封装有对应的api,名称忘记了,也可以自己简单写一个函数

    点击某个按钮,检查需要出现的东西是否出现,如果没出现再等待1(n)秒。。然后循环再检查,再等待。。。直到超出我们预置的时间范围。。。

    这样的方式会好的多。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2012-12-14 10:59:40 | 只看该作者
    楼主好牛X 求助帖还要收费?桑不起啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2013-1-25 17:52:27 | 只看该作者
    Thank you very much for sharing!The good man!The good life of peace!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-1 08:26
  • 签到天数: 113 天

    连续签到: 1 天

    [LV.6]测试旅长

    12#
    发表于 2015-4-2 19:14:06 | 只看该作者
    不可能啊,要停用吧
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-11 16:33 , Processed in 0.076417 second(s), 26 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表