簡體   English   中英

如何在 Java 中使用 Selenium Webdriver 獲取標簽值

[英]How to use Selenium Webdriver in Java to get tag values

我嘗試使用此代碼進行實驗。 我試圖制作一個系統來從網站獲取數據並使用拉格朗日插值法創建多項式。 我正在用 Java 學習 Selenium 來做到這一點。 看看我開發的東西。

package com.gustavo.seleniumTest;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class seleniumTest {

public static void main(String[] args) {

    System.setProperty("webdriver.gecko.driver", "/home/gustavo/geckodriver");
    WebDriver driver = new FirefoxDriver();

    String valor;

    driver.get("http://cotacoes.economia.uol.com.br/acao/cotacoes-historicas.html?codigo=PETR4.SA&size=200&page=1&period=");
    valor = driver.findElement(By.xpath(".//*[@class='odd']")).getText();
    System.out.println(valor);
}

注意:我使用的是 linux 和 Firefox。

您需要修改定位器,如果要獲取所有元素,則需要使用driver.findElements()方法。

試試下面的 XPath 定位器,它將識別表具有的行數:

String xPath = "//table[@id='tblInterday']/tbody//tr";

你可以像這樣獲得行的大小:

int rows = driver.findElements(By.xpath(xPath)).size();

您可以使用循環遍歷整行,例如for循環如下:

for(int i=1;i<rows;i++) {

}

下面的 XPath 將根據行索引號標識每行中的列數:

String xPath = "//table[@id='tblInterday']/tbody//tr[row index number]/td";

由於有很多行,您可以將行索引傳遞給上面的 XPath,如下所示:

for(int i=1;i<rows;i++) {
    driver.findElements(By.xpath(xPath+"["+i+"]/td"));
}

當我們使用上面的driver.findElements()方法時,它將保存所有列元素,我們可以循環遍歷並打印每個元素,如下所示:

for(WebElement element : driver.findElements(By.xpath(xPath+"["+i+"]/td"))) {
    System.out.print(element.getText()+"\t");
}

代替

driver.findElements(By.xpath(xPath+"["+i+"]/td")).forEach(e -> System.out.print(e.getText()+"\t"));

for(WebElement element : driver.findElements(By.xpath(xPath+"["+i+"]/td"))) {
        System.out.print(element.getText()+"\t");
    }

如果要正常打印。

以下是使用 Java 8 的整個代碼:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class SeleniumTest {

    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "C:\\NotBackedUp\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();

        driver.get("http://cotacoes.economia.uol.com.br/acao/cotacoes-historicas.html?codigo=PETR4.SA&size=200&page=1&period=");
        String xPath = "//table[@id='tblInterday']/tbody//tr";
        int rows = driver.findElements(By.xpath(xPath)).size();
        for(int i=1;i<rows;i++) {
            driver.findElements(By.xpath(xPath+"["+i+"]/td")).forEach(e -> System.out.print(e.getText()+"\t"));
            System.out.println();
        }
    }
}

我希望它有幫助...

在 DOM 中發布元素(標簽之間的整個內容)。

如果它是標簽內的文本,您的代碼將起作用,但例如,如果文本在值參數內,您將需要 getProperty("value") 以便從元素中提取它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM