java selenium的使用

    有时候网站的数据使用ajax或者js生成,或者例如登录界面使用了拖动验证码,这时基于httpclient实现爬虫就不大好做了.而使用 selenium可以模拟真实用户对浏览器进行操作,浏览器自动按照脚本代码做出点击,输入,打开,验证等操作,就像真实用户所做的一样.

     注意:浏览器版本或者浏览器驱动版本要与selenium-server的版本要匹配,以下的介绍是本人使用的版本

一,chrome

(1)windows系统,下载2.30版本的chromedriver.exe,selenium-server为3.0.1版本,chrome版本60.0.3112.113

        System.setProperty("webdriver.chrome.driver", "E:\\工具\\chromedriver2\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.get("http://www.baidu.com");

二,firefox

(1)linux系统,geckodriver使用0.16.0版本,selenium-server为3.0.1版本,firefox版本为45.4.0

        System.setProperty("webdriver.firefox.marionette", "/usr/java/geckodriver");
        driver = new FirefoxDriver();
        driver.get("http://www.baidu.com");

三,PhantomJS,与前两者相比就是无界面的 webkit 内核浏览器,运行时候不会打开浏览器

(1)phantomjs版本为2.1.1,selenium-server为3.0.1版本

        System.setProperty("phantomjs.binary.path", "E:\\工具\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe");  
        driver = new PhantomJSDriver();
        driver.get("http://www.baidu.com");


四,使用代理

        Proxy proxy = new Proxy();  
        proxy.setHttpProxy("127.0.0.0:8888");  
        DesiredCapabilities capabilities = DesiredCapabilities.chrome();  
        capabilities.setCapability(CapabilityType.PROXY, proxy);
        driver = new ChromeDriver(capabilities);

五,修改user-agent

(1)chromedriver

	ChromeOptions options = new ChromeOptions();
        options.addArguments("user-agent=myAgent");
	driver = new ChromeDriver(options);

(2)phantomjs

        DesiredCapabilities capabilities;
        capabilities = new DesiredCapabilities();       
        capabilities.setCapability("phantomjs.page.settings.userAgent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:16.0) Gecko/20121026 Firefox/16.0");
        driver = new PhantomJSDriver(capabilities);

六,小试身手

(1)使用selenium实现需求:第一步,登录百度http://www.baidu.com,.第二步,搜索框中输入"爬虫".第三步,点击搜索按钮

    public static void main(String[] args) throws InterruptedException {
    	System.setProperty("webdriver.chrome.driver", "E:\\工具\\chromedriver2\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.get("http://www.baidu.com");
        //设置10秒  
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);  
        WebElement word = driver.findElement(By.id("kw"));
        word.sendKeys("爬虫");
        WebElement btn = driver.findElement(By.id("su"));
        btn.click();
        Thread.sleep(5000);
        driver.close();
    }
注意,当程序运行久了时,看看进程中chromedriver.exe是否已经彻底杀死,以免该进程越来越多影响了服务器.

(2)实现需求:通过腾讯的点击验证码.因为页面的验证码部分是一个iframe,所以先找到"验证"这个元素,再鼠标右移,再点击.

    public static void main(String[] args) throws InterruptedException {
    	System.setProperty("webdriver.chrome.driver", "E:\\工具\\chromedriver2\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.get("http://open.captcha.qq.com/cap_web/experience-slidepass.html");
        //设置10秒  
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        List webElements = driver.findElements(By.cssSelector(".user-info"));
        WebElement e = webElements.get(2);
        Actions actions = new Actions(driver);
        actions.moveToElement(e).perform();
        Thread.sleep(2000);
        actions.moveByOffset(100, 1).perform();
        Thread.sleep(2000);
        actions.click().perform();
        Thread.sleep(5000);
        driver.close();
    }

完成效果:

java selenium的使用_第1张图片

你可能感兴趣的:(selenium)