请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Android Studio 中文社区论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: Android Sdk Gradle
查看: 103|回复: 0

[WINDOWS] 教你用selenium做网页自动测试

[复制链接]

31

主题

29

帖子

109

积分

注册会员

Rank: 2

积分
109
发表于 2016-7-6 20:46:07 | 显示全部楼层 |阅读模式
最近在做一个简单新浪微博抓取功能,遇到了请求被新浪拦截,正因为如此了解到selenium
selenium 是一个web的自动化测试工具。学习selenium能够完成很多自动化测试功能甚至会让你感到很多出乎意料的事情。
接下来做一件简单而大气的事情(这里使用java语言),模拟一个chrome浏览器访问 http://www.weibo.com 自动输入微博用户名和密码 自动点击登录,当登录成功后给用户一个反馈。
必须需要一个浏览器驱动包 可以到http://docs.seleniumhq.org/download/下载 需要匹配自己的操作系统 以及浏览器 下载对应的版本。
比如 我的驱动放在了本地磁盘 E:\Dev\devPlugins\chromedriver.exe 路径。

public class RunApp {

    public static void main(String[] args)throws Exception{
        //创建一个chrome驱动
        ChromeDriverService service = new ChromeDriverService.Builder()
                .usingDriverExecutable(
                        new File(
                                "E:\\Dev\\devPlugins\\chromedriver.exe"))
                .usingAnyFreePort().build();
        service.start();
        WebDriver driver = new RemoteWebDriver(service.getUrl(),
                DesiredCapabilities.chrome());

        //访问weibo.com站点
        driver.get("http://www.weibo.com?t="+System.currentTimeMillis());

        //等待网站是否刷新完成  如果30秒还没有响应则认为超时了
        (new WebDriverWait(driver,30)).until(new ExpectedCondition<Boolean>() {
            public Boolean apply(WebDriver d) {
                //使用域名判断是否跳转到登录页面
                return d.getCurrentUrl().toLowerCase().startsWith("http://weibo.com");
            }
        });
        // 显示搜索结果页面的 title
        System.out.println("打印一下网页的TITLE: " + driver.getTitle());
        //点击用户登录的窗口
        //这里的path可以开发开发人员工具 复制xpath
        WebElement element = driver.findElement(
          By.xpath("//*[@id=\"pl_login_form\"]/div[2]/div[1]/div/a[2]"));
        element.click();
        //自动输入用户名数据
        WebElement userId=element.findElement(
          By.xpath("//*[@id=\"loginname\"]"));
        WebElement password=element.findElement(
          By.xpath("//*[@id=\"pl_login_form\"]/div[2]/div[3]/div[2]/div/input"));
        WebElement submit= element.findElement(
          By.xpath("//*[@id=\"pl_login_form\"]/div[2]/div[3]/div[6]/a"));
        //你的微博账号
        userId.sendKeys("22222");
        //你的微博密码
        password.sendKeys("xxxxxxx");
        //触发登录动作
        submit.click();
        System.out.println("点击登录了");
        //等待是否登录成功 超时时间600
        (new WebDriverWait(driver, 600)).until(new ExpectedCondition<Boolean>() {
            public Boolean apply(WebDriver d) {
                //根据网页标题来辨别是否登录成功 如果成功后新浪微博标题为 我的首页 ************
                return d.getTitle().startsWith("我的首页");
            }
        });
        System.out.println("登录完成 你可以开始刷微博了   准备获取cookies");
        Collection set= driver.manage().getCookies();

        // 关闭浏览器
       // driver.quit();
        // 关闭 ChromeDriver 接口
       // service.stop();
    }}
修改自己的微博账号和密码后,直接使用控制台运行这个程序 就可以自动打开浏览器 自动输入账号密码 自动登录。有时候会出现验证码的情况需要自己输入验证码。



原文来自:笑松小站

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

AndroidStudio中文社区 ( 京ICP备06021553号 )  

资源: 安卓 | Android | 社区 | 问答 | 培训 | 人才 | 招聘 | YotaPhone | VisualStudio

© 2013-2014 Android Studio

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