如何从标签内部获取文本使用selenium webdriver java?

时间:2016-05-13 05:32:19

标签: java selenium

这是我的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

如何使用selenium java?

我写了这段代码但没有用。

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

4 个答案:

答案 0 :(得分:1)

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

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

OR

您可以使用正则表达式来提取([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>标签的文本后,您可以使用一些正则表达式提取信息。

答案 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 :(得分:0)

基于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");

   }

 }

答案 3 :(得分:0)

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

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