selenium获取带有ajax的span文本

时间:2016-08-23 15:25:00

标签: ajax selenium

我的价格加载了Ajax并以span显示。当然在Html中它是硬编码的价格0.但在页面上我看到一个新的价格。并且它始终存在同样的问题:我的测试没有看到价格,这是我用Ajax请求获得的。

public void testSW40RolladenwelleKonfi() {
    System.out.println("test preis SW40 Ausfuehrung Rolladenwelle Konfi");
    driver.get("https://");
    WebElement lange = driver.findElement(By.id("txt_sw_laenge"));
    lange.clear();
    lange.sendKeys("1000");
    WebElement sw40 = driver.findElement(By.id("SW40"));
    sw40.click();
    WebDriverWait wait = new WebDriverWait(driver, 10);
     Boolean element =   wait.until(ExpectedConditions.textToBePresentInElementLocated(By.xpath("//span[@id='productprice']/text()"), "10,00"));
assertTrue(element);
}

我也试过了:

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until( 
  ExpectedConditions.presenceOfElementLocated(By.xpath("/span[@id='productprice']")));
assertEquals(element.getText(), "10,00");

2 个答案:

答案 0 :(得分:1)

从webdriver等待条件中删除/ text()。请在下方使用并查看...

Boolean element =   wait.until(ExpectedConditions.textToBePresentInElementLocated(By.xpath("//span[@id='productprice']"), "10,00"));

答案 1 :(得分:0)

实际上找到text() node doesn't work with selenium WebDriver WebElement

你的xpath没有返回一个元素;它返回一个文本节点。虽然这可能在Selenium RC(以及Selenium IDE)中完全可以接受,但 WebDriver WebElement接口上的方法需要一个元素对象,而不仅仅是任何DOM节点对象。

要解决此问题,您应该使用//span[@id='productprice'] xpath,但这里不需要使用xpath,您可以尝试使用By.id(),如下所示: -

Boolean element =   wait.until(ExpectedConditions.textToBePresentInElementLocated(By.id("productprice"), "10,00"));
assertTrue(element);