主方法结束时的断言失败,即使该字符串包含在元素中,至少根据我在断言之前执行的控制台写入行。
任何人都可以帮我弄清楚断言失败的原因吗?我的智慧结束了。直接把我的头发拉出来。
抱歉,如果这是一团糟,我是Java新手。
enum Item {
DRILL(100.00, "a0Gf40000005CctEAE", "Drill"), ///
WRENCH(15.00, "a0Gf40000005CcuEAE", "Wrench"), ///
HAMMER(10.00, "a0Gf40000005CcvEAE", "Hammer"); ///
private final double _price;
private final String _itemID;
private final String _itemDisplayName;
Item(double price, String itemID, String itemDisplayName){
this._price = price;
this._itemID = itemID;
this._itemDisplayName = itemDisplayName;
}
double getItemPrice() {
return _price;
}
String getItemID() {
return _itemID;
}
String getItemName() {
return _itemDisplayName;
}
}
public class TestCaseOne {
static WebDriver driver;
public static void main(String[] args) {
// TODO Auto-generated method stub
System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
//System.setProperty("webdriver.gecko.driver", "geckodriver.exe");
driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
Item testItem = Item.WRENCH;
driver.get("http://test.com/WebOrderScreen");
AddItem(testItem);
ChangeItemQuantity(testItem, 3);
driver.findElement(By.xpath("//span[text()='Payment Information']")).click();
WebElement itemLink = driver.findElement(By.id("order-summary")).findElement(By.xpath(String.format(".//a[(@href='/%s')]", testItem.getItemID())));
WebElement itemParentRow = itemLink.findElement(By.xpath("../../../.."));
String text = itemParentRow.getText();
System.out.println(text);
Assert.assertTrue(itemParentRow.toString().contains(testItem.getItemName()));
}
public static void AddItem(Item item) {
//first find the link to the item we want
WebElement itemLink = driver.findElement(By.xpath(String.format("//a[(@href='/%s')]", item.getItemID())));
WebElement itemParentRow = itemLink.findElement(By.xpath("../../../.."));
itemParentRow.findElement(By.tagName("i")).click(); //now that we found the parent row of the item we want, click the button to add it
driver.findElement(By.id("shopping-cart")).findElement(By.xpath(String.format(".//a[(@href='/%s')]", item.getItemID())));
System.out.println("Item ENUM found in shopping cart: " + item);
///for debugging
/*
System.out.println(item.getItemID());
System.out.println(item.getItemPrice());
System.out.println(itemParentRow.getText());
*/
}
public static void ChangeItemQuantity(Item item, Integer quantity) {
WebElement itemLink = driver.findElement(By.id("shopping-cart")).findElement(By.xpath(String.format(".//a[(@href='/%s')]", item.getItemID())));
WebElement itemParentRow = itemLink.findElement(By.xpath("../../../../.."));
//System.out.println("Old item count: " + itemParentRow.findElement((By.xpath(".//input[@inputmode='numeric']"))).getAttribute("value"));
itemParentRow.findElement((By.xpath(".//input[@inputmode='numeric']"))).clear();
itemParentRow.findElement((By.xpath(".//input[@inputmode='numeric']"))).sendKeys(quantity.toString());
//System.out.println("New item count: " + itemParentRow.findElement((By.xpath(".//input[@inputmode='numeric']"))).getAttribute("value"));
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@id='shopping-cart']//td[@class='nx-summary']")));
}
}
答案 0 :(得分:1)
在断言中,您在toString()
上调用WebElement
,返回的内容如下:
[[[[[[ChromeDriver: chrome on LINUX (084b45f48be31410009e34b87903f54a)] -> id: order-summary]] -> xpath: .//a[(@href='/a0Gf40000005CcuEAE')]]] -> xpath: ../../../..]
就像Andy所说,你应该使用itemParentRow.getText()
。