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<WebElement> 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是一种用于自动化Web应用程序测试的工具。它提供了一组API,可以与浏览器进行交互,并模拟用户在浏览器中执行的操作。下面是使用Java Selenium的一般步骤: 1. 配置环境:首先,您需要安装Java Development Kit(JDK)和Eclipse IDE(或其他Java IDE)。然后,您需要下载Selenium Java客户端驱动器,并将其添加到您的项目中。 2. 创建项目:在Eclipse中创建一个新的Java项目,并将Selenium Java客户端驱动器添加到项目的构建路径中。 3. 导入必要的类:在Java类中,导入所需的Selenium类,例如WebDriver和WebElement。 4. 初始化WebDriver:使用适当的浏览器驱动程序初始化WebDriver对象。例如,如果您要使用Chrome浏览器,可以使用ChromeDriver。 5. 执行测试:使用WebDriver对象执行各种操作,例如打开URL、查找元素、填写表单、点击按钮等。 6. 断言和验证:使用断言和验证方法来验证测试结果是否符合预期。 7. 清理资源:在测试完成后,关闭WebDriver对象以释放资源。 下面是一个简单的示例代码,演示了如何使用Java Selenium打开Google首页并搜索关键字: ```java import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; public class SeleniumExample { public static void main(String[] args) { // 设置Chrome浏览器驱动程序的路径 System.setProperty("webdriver.chrome.driver", "path/to/chromedriver"); // 初始化ChromeDriver对象 WebDriver driver = new ChromeDriver(); // 打开Google首页 driver.get("https://www.google.com"); // 在搜索框中输入关键字 WebElement searchBox = driver.findElement(By.name("q")); searchBox.sendKeys("Java Selenium"); // 提交搜索表单 searchBox.submit(); // 等待搜索结果加载完成 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); // 验证搜索结果页面标题是否包含关键字 String pageTitle = driver.getTitle(); if (pageTitle.contains("Java Selenium")) { System.out.println("搜索成功!"); } else { System.out.println("搜索失败!"); } // 关闭浏览器 driver.quit(); } } ``` 这只是一个简单的示例,您可以根据需要使用更多的Selenium功能和方法来编写更复杂的测试脚本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值