2017-10-29 1 views
0

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']"))); 

} 

}

+1

Sie behaupten, dass 'itemParentRow.toString()' enthält, aber Drucken 'itemParentRow.getText()'. Willst du stattdessen 'itemParentRow.getText()' in der Assertion verwenden? –

+0

Danke für die Hilfe Andy. Ich wusste, dass es so einfach war. Pfui. – kevin

Antwort

1

In der Behauptung Sie toString() auf WebElement fordern, die wie etwas zurückgibt:

[[[[[[ChromeDriver: chrome on LINUX (084b45f48be31410009e34b87903f54a)] ->  id: order-summary]] -> xpath: .//a[(@href='/a0Gf40000005CcuEAE')]]] -> xpath: ../../../..] 

Genau wie Andy angegeben, sollten Sie itemParentRow.getText() verwenden.

Verwandte Themen