这是我的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());
答案 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)
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"));