有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何使用SeleniumWebDriverJava从内部标记获取文本?

这里是我的HTML:-

<li id="li1">
  <div>
    <p class="font11 metadata_value">0 Views | 14 Downloads</p>
    <p class="font11 metadata_value">639.78 MB</p>
</div>                      
</li>

我想要639.78分

如何使用SeleniumJava

我写了这段代码,但不起作用

System.out.println(driver.findElement(By.xpath(".//[@id='li1']/div[1]/p[2]")).getText());


共 (4) 个答案

  1. # 1 楼答案

    使用css选择器在所有可用文本上使用For循环,可以打印它

    public void verifrytext(String inputext)
    {
        WebDriver driver=new ChromeDriver();
        List <WebElement> text = driver.findElements(By.cssSelector(".font11 metadata_value"));
    
       for(int i=0; i< text.size(); i++)
       {
         if(text.get(i).getText().equalsIgnoreCase(inputext))
         {
           System.out.println(text.get(i).getText());
         }   
       }
    }
    
  2. # 2 楼答案

    我会使用正则表达式删除数字周围的文本,然后对其进行解析:

    String text = driver.findElement(By.cssSelector("#li1 > div > p:nth-child(2)")).getText();
    Float value = Float.parseFloat(text.replaceFirst(".*?([\\d.]+).*", "$1"));
    
  3. # 3 楼答案

    基于Selenium Tutorial

    public class Mytest1 { 
    //To open Firefox browser 
    WebDriver driver = new FirefoxDriver(); 
    
    @Before public void beforetest() { 
    //To Maximize Browser Window 
    driver.manage().window().maximize(); 
    //To Open URL In browser 
    driver.get("http://only-testing-blog.blogspot.in/2013/11/new-test.html"); 
    } 
    
    
    
    @After public void aftertest() { 
       driver.quit(); 
       } 
    
       @Test public void test() { 
       driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
    
       //READ
       String datentime = driver.findElement(By.className("metadata_value")).getText();
       //WRITE
       driver.findElement(By.className("metadata_value")).sendKeys("SOME_STRING");
    
       }
    
     }
    
  4. # 4 楼答案

    您可以使用以下代码获取文本:

    String text = driver.findElement(By.cssSelector("p.font11.metadata_value")).getText()
    

    变量text将包含639.78 MB值。 您可以通过以下几种方式从文本中提取639.78

    text.split("\\s+")[0] // this will return 639.78
    

    或者

    您可以使用正则表达式来提取数字,比如([0-9.]*).*

    如果您正在使用正则表达式,可以从这个link获取帮助

    对于具有多个<p>类:

    <li id="li1"> <div> <p class="font11 metadata_value">0 Views | 14 Downloads</p> <p class="font11 metadata_value">639.78 MB</p> </div> </li>

    可以使用xpath获取文本值

    driver.findElement(By.xpath("//li[@id='li1']/div/p[1]")).getText() // for first <p>
    
    driver.findElement(By.xpath("//li[@id='li1']/div/p[2]")).getText() //for second <p>
    
    driver.findElement(By.xpath("//li[@id='li1']/div/p[3]")).getText() // for third <p>
    
    and so on ..
    

    在获得<p>标记的文本后,可以使用一些正则表达式提取信息