selenium webdriver使用

首先要先加入下面的这些jar包

    <!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>23.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/net.java.dev.jna/jna -->
        <dependency>
            <groupId>net.java.dev.jna</groupId>
            <artifactId>jna</artifactId>
            <version>4.5.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.codeborne/phantomjsdriver -->
        <dependency>
            <groupId>com.codeborne</groupId>
            <artifactId>phantomjsdriver</artifactId>
            <version>1.4.3</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-api -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-api</artifactId>
            <version>3.8.1</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-chrome-driver -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-chrome-driver</artifactId>
            <version>3.8.1</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-firefox-driver -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-firefox-driver</artifactId>
            <version>3.8.1</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-htmlunit-driver -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-htmlunit-driver</artifactId>
            <version>2.52.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-ie-driver -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-ie-driver</artifactId>
            <version>3.8.1</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.8.1</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-remote-driver -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-remote-driver</artifactId>
            <version>3.8.1</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-support -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-support</artifactId>
            <version>3.8.1</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-server -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-server</artifactId>
            <version>3.8.1</version>
        </dependency>
        
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
        </dependency>

注意我标红的这个jar包,因为我是使用的spring-boot 创建的maven项目继承的父类版本不够所以要重新载入一个新包。网上有看到使用selenium需要加载selenium-server-standalone这个jar替换我加红的包 也是可以的,但是我打包的时候出现了问题,standalone这个包加载不进去所以我就只能使用红色的gson这个jar包了。

接下来就是我写的一个例子:









下面是源码:

public void getForeignTradeMarkSeleniumInfo(String path)
    {
        WebDriver driver = null;
        // System.setProperty("webdriver.chrome.driver", "C:\\Program Files
        // (x86)\\Google\\Chrome\\Application\\chrome.exe");
        System.setProperty("webdriver.firefox.bin", path + "firefox.exe");
        // driver = new ChromeDriver();
        System.setProperty("webdriver.gecko.driver", path + "geckodriver.exe");
        driver = new FirefoxDriver();
        driver.get("http://www.wipo.int/branddb/en/");
        try
        {
            getInfo(driver, "* TO 2018-01-01");
        } catch (InterruptedException e)
        {
            e.printStackTrace();
        }

        // if (list != null)
        // {
         foreignTradeMarkDao.addAccountingClerk(list);
        // }
    }

    private void getInfo(WebDriver driver, String date) throws InterruptedException
    {
        try
        {
            int maxPage = -1;
            // 定义一条数据来验证页面是否刷新
            String oldValue = "";
            driver.navigate().refresh();
            Thread.sleep(2000);
            // 定义事件
            Actions actions = new Actions(driver);

            // 点击选择所有的属性
            WebElement newOut = (new WebDriverWait(driver, 20))
                    .until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(
                            "a[class='editButton ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-secondary']")));
            // System.out.println("newOut.getText-->" + newOut.getText());
            newOut.click();
            // 找到add-all按钮并点击
            WebElement addall = (new WebDriverWait(driver, 20))
                    .until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("a[class='add-all']")));
            // System.out.println("addall.getText-->" + addall.getText());
            addall.click();

            // 点击添加完成
            WebElement okButton = (new WebDriverWait(driver, 20))
                    .until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(
                            "button[class='ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only']")));
            // System.out.println("okButton.getText-->" + okButton.getText());
            okButton.click();

            Thread.sleep(2000);

            // 按时间查询
            WebElement dateButton = (new WebDriverWait(driver, 20))
                    .until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("a[id='ui-id-4']")));
            // System.out.println("dateButton.getText-->" +
            // dateButton.getText());
            dateButton.click();

            // 找到输入日期的输入框并赋值
            JavascriptExecutor driver_js = (JavascriptExecutor) driver;
            driver_js.executeScript("arguments[0].value=\"" + date + "\"",
                    driver.findElement(By.cssSelector("input[id='AD_input']")));


            // 点击查询按钮
            WebElement searchButton = (new WebDriverWait(driver, 20))
                    .until(ExpectedConditions.presenceOfElementLocated(By.xpath(
                            "//div[@id='date_search']/div[@class='searchButtonContainer bottom right']/a[@class='noPrint searchButton bigButton ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-secondary']")));
            // System.out.println("searchButton.getText-->" +
            // searchButton.getText());
            searchButton.click();

            Thread.sleep(2000);
            (new WebDriverWait(driver, 20)).until(ExpectedConditions.presenceOfElementLocated(By.xpath("//tr[@id='" + 0 + "']/td[" + 1 + "]")));

            if (maxPage == -1)
            {
                // 找到总页数
                WebElement tempMaxPage = (new WebDriverWait(driver, 20))
                        .until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("div[class='skipWindow']")));
                String tempMaxPageString = tempMaxPage.getText();
                // 将数字提取出来
                String regEx = "[^0-9]";
                Pattern p = Pattern.compile(regEx);
                Matcher m = p.matcher(tempMaxPageString);
                String maxPageString = m.replaceAll("").trim();
                maxPage = Integer.valueOf(maxPageString);
            }
            log.info("maxPage--->" + maxPage);
            log.info("page-->" + page);
            for (int i = page; i < maxPage; i++)
            {
                
                Thread.sleep(2000);
                (new WebDriverWait(driver, 20)).until(ExpectedConditions.presenceOfElementLocated(By.xpath("//tr[@id='" + 0 + "']/td[" + 1 + "]")));
                // 调到所要的页数
                // 找到输入框
                WebElement skipValue = (new WebDriverWait(driver, 20))
                        .until(ExpectedConditions.presenceOfElementLocated(By.id("skipValue1")));

                // 输入值
                driver_js.executeScript("arguments[0].value=\"" + page + "\"", driver.findElement(By.id("skipValue1")));

                // 将光标移到input框
                actions.click(driver.findElement(By.id("skipValue1")));

                Thread.sleep(2000);

                // 点击回车刷新数据
                actions.sendKeys(Keys.ENTER).perform();


                Thread.sleep(2000);
                // 确保数据已经更新
                if (oldValue.equals((new WebDriverWait(driver, 20))
                        .until(ExpectedConditions.presenceOfElementLocated(By.xpath("//tr[@id='" + 0 + "']")))
                        .getText()))
                {
                    Thread.sleep(5000);
                }
                if (oldValue.equals((new WebDriverWait(driver, 20))
                        .until(ExpectedConditions.presenceOfElementLocated(By.xpath("//tr[@id='" + 0 + "']")))
                        .getText()))
                {
                    getInfo(driver, "* TO 2018-01-01");
                    break;
                }
                oldValue = (new WebDriverWait(driver, 20))
                        .until(ExpectedConditions.presenceOfElementLocated(By.xpath("//tr[@id='" + 0 + "']")))
                        .getText();
                // 将每条数据拿出
                List<ForeignTradeMark> list = new ArrayList<ForeignTradeMark>();
                for (int j = 0; j < 30; j++)
                {
                    // for (int k = 7; k < 21; k++)
                    /*
                     * WebElement element = (new WebDriverWait(driver,
                     * 20)).until(ExpectedConditions
                     * .presenceOfElementLocated(By.xpath("//tr[@id='" + j +
                     * "']/td[" + k + "]")));
                     */
                    ForeignTradeMark foreignTradeMark = new ForeignTradeMark();
                    int k = 7;
                    foreignTradeMark.setBrand((new WebDriverWait(driver, 20))
                            .until(ExpectedConditions
                                    .presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
                            .getText());
                    foreignTradeMark.setSource((new WebDriverWait(driver, 20))
                            .until(ExpectedConditions
                                    .presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
                            .getText());
                    foreignTradeMark.setStatus((new WebDriverWait(driver, 20))
                            .until(ExpectedConditions
                                    .presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
                            .getText());
                    foreignTradeMark.setRelevan((new WebDriverWait(driver, 20))
                            .until(ExpectedConditions
                                    .presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
                            .getText());
                    foreignTradeMark.setOrigin((new WebDriverWait(driver, 20))
                            .until(ExpectedConditions
                                    .presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
                            .getText());

                    foreignTradeMark.setHolder((new WebDriverWait(driver, 20))
                            .until(ExpectedConditions
                                    .presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
                            .getText());
                    foreignTradeMark.setHolderCountry((new WebDriverWait(driver, 20))
                            .until(ExpectedConditions
                                    .presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
                            .getText());
                    foreignTradeMark.setNumber((new WebDriverWait(driver, 20))
                            .until(ExpectedConditions
                                    .presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
                            .getText());
                    foreignTradeMark.setRegDate((new WebDriverWait(driver, 20))
                            .until(ExpectedConditions
                                    .presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
                            .getText());
                    foreignTradeMark.setAppDate((new WebDriverWait(driver, 20))
                            .until(ExpectedConditions
                                    .presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
                            .getText());
                    foreignTradeMark.setExpDate((new WebDriverWait(driver, 20))
                            .until(ExpectedConditions
                                    .presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
                            .getText());

                    foreignTradeMark.setImgClas((new WebDriverWait(driver, 20))
                            .until(ExpectedConditions
                                    .presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
                            .getText());
                    foreignTradeMark.setNiceCi((new WebDriverWait(driver, 20))
                            .until(ExpectedConditions
                                    .presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")))
                            .getText());
                    // img拿的是src
                    try
                    {
//                        WebElement imgElement = (new WebDriverWait(driver, 20)).until(ExpectedConditions
//                                .presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]")));
                        foreignTradeMark.setImgString((new WebDriverWait(driver, 20)).until(ExpectedConditions
                                .presenceOfElementLocated(By.xpath("//tr[@id='" + j + "']/td[" + (k++) + "]/img"))).getAttribute("src"));
                    } catch (Exception e)
                    {
                    }
                    list.add(foreignTradeMark);
                    log.info(foreignTradeMark.toString());
                }
                foreignTradeMarkDao.addAccountingClerk(list);
                page++;
                log.info("page++-->" + page);
            }
        } catch (Exception e)
        {
            getInfo(driver, "* TO 2018-01-01");
        }

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值