【问题标题】:Checking correct url and title page automatically自动检查正确的网址和标题页
【发布时间】:2017-06-17 06:10:44
【问题描述】:

我尝试创建一个方法来检查页面是否加载了正确的 URL 和标题。 我的代码几次通过,几次下降。 这是我的错误:

java.lang.AssertionError: Checking if http://store.demoqa.com/products-page/product-category/accessories/ contains: imacs

这是我的代码:

public void showNavigationLinks() {

        Actions action = new Actions(driver);
        String[] submenu = {"Accessories", "iMacs", "iPads" , "iPhones" , "iPods" , "MacBook"};

        for(int i=0; i < submenu.length; i++) {

            WebElement productCategory = waitForElementToBeDisplayed(By.xpath("//a[contains(.,'Product Category')]"), 5000);
            action = action.moveToElement(productCategory);

            WebElement submenuItem = waitForElementToBeDisplayed(By.xpath("//a[contains(.,'" + submenu[i] + "')]"), 5000);
            action.moveToElement(submenuItem).click().build().perform();

            String currentUrl = driver.getCurrentUrl();
            String title = driver.getTitle();

            Assert.assertTrue("Checking if " + currentUrl + " contains: " + submenu[i].toLowerCase(),
                    currentUrl.contains(submenu[i].toLowerCase()));

            Assert.assertTrue("Checking if title contains: " + submenu[i],
                    title.contains(submenu[i]));
            System.out.println(title);
        }

【问题讨论】:

标签: java selenium selenium-webdriver automation selenium-chromedriver


【解决方案1】:

您收到 AssertionError 的原因是您的断言失败。获取的 URL 是“http://store.demoqa.com/products-page/product-category/accessories/”,而您希望该 url 包含单词“imac”(我想您希望该 URL 是 http://store.demoqa.com/products-page/product-category/imacs/),这会导致断言失败。

在您的代码中,您正在等待显示子菜单项“imacs”,然后单击子菜单选项并验证子菜单选项的 URL 是否已加载。此操作不会始终产生相同的结果,因为页面可能需要一段时间才能加载,并且您可能正在获取以前的 URL。我建议等到新页面完全加载后再获取页面的 URL 和标题。

【讨论】:

    【解决方案2】:

    尝试以下操作:{它不使用断言,但仅当它们与您的子菜单条目匹配时才会打印标题和网址:

    package package1;
    
    import java.awt.AWTException;
    
    import org.testng.Assert;
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.interactions.Actions;
    
    public class new1 {
    
    static WebDriver driver = null;
    
    public static void main(String[] args) throws InterruptedException, AWTException {
    
        System.setProperty("webdriver.chrome.driver","C:\\Eclipse\\Selenium\\chromedriver.exe");
    
        driver = new ChromeDriver();
    
        driver.manage().window().maximize();
    
        driver.get("http://store.demoqa.com/products-page/product-category/accessories/");
    
        Thread.sleep(5000);
    
        showNavigationLinks() ;
    
    }
    
    public static void showNavigationLinks() {
    
        Actions action = new Actions(driver);
        String[] submenu = {"Accessories", "iMacs", "iPads" , "iPhones" , "iPods" , "MacBook"};
    
        for(int i=0; i < submenu.length; i++) {
    
            WebElement productCategory = driver.findElement(By.xpath("//a[contains(.,'Product Category')]"));
            action = action.moveToElement(productCategory);
    
            WebElement submenuItem = driver.findElement(By.xpath("//a[contains(.,'" + submenu[i] + "')]"));
            action.moveToElement(submenuItem).click().build().perform();
    
            String currentUrl = driver.getCurrentUrl();
            String title = driver.getTitle();
    
            if(currentUrl.contains(submenu[i].toLowerCase())){
    
                System.out.println("CurrentUrl is " + currentUrl + "  " + submenu[i].toLowerCase());
    
            }
    
    
    
            if(title.contains(submenu[i])){
    
                System.out.println("title is " + title + "  " + submenu[i]);
    
            }
    
    
    
        }
    
    }
    

    }

    【讨论】:

    • 此代码有效,但并不总是如您所愿。它碰巧通过了一个测试并没有检查所有各方的期望。我等待该项目或它没有帮助。
    • 我没有得到“它恰好通过了一个测试并没有检查所有各方的期望。”,你能解释一下吗?
    • 我的问题是它还没有到达一个加载已经开始检查是否正确的一边并抛出错误。我试图等待,但它没有帮助。我使用了 waitForElementToBeDisplayed。
    猜你喜欢
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多