我的价格加载了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");
答案 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);