Die Bestätigung am Ende der Hauptmethode ist fehlgeschlagen, obwohl diese Zeichenfolge in dem Element enthalten ist, zumindest entsprechend der Konsolenschreibzeile, die ich vor der Assertion ausführe.Warum ist meine Behauptung, dass das Element einen bestimmten String enthält, fehlgeschlagen, obwohl es dort ist?
kann mir jemand helfen herauszufinden, warum diese Behauptung versagt? Ich bin mit meinem Latein am Ende. Ich ziehe mir buchstäblich die Haare aus.
Und es tut mir leid, wenn es ein Chaos ist, ich bin neu in 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']")));
}
}
Sie behaupten, dass 'itemParentRow.toString()' enthält, aber Drucken 'itemParentRow.getText()'. Willst du stattdessen 'itemParentRow.getText()' in der Assertion verwenden? –
Danke für die Hilfe Andy. Ich wusste, dass es so einfach war. Pfui. – kevin