-1

Я попытался создать метод, который я собираюсь проверить, загружена ли страница с правильным URL-адресом и названием. Мой код проходит несколько раз, несколько раз падает. Это моя ошибка:Проверка правильного 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); 
     } 
+1

Возможная Дубликат [Убедитесь, что навигационные ссылки приводя к правильной странице] (http://stackoverflow.com/questions/41960839/verify-that-navigation-links-are-leading-to-correct-page) – mrfreester

+1

Мне сложно сказать, как это отличается от предыдущего 6 вопросов, которые вы задали? Я думаю, что я видел тот же вопрос, который задал и кто-то еще недавно. Пожалуйста, удалите некоторые из своих вопросов, чтобы избежать дублирования. Cheers :) – mrfreester

ответ

0

Причина вы получаете AssertionError потому, что ваше утверждение не удалось. Выбранный URL-адрес: «http://store.demoqa.com/products-page/product-category/accessories/», тогда как вы ожидаете, что URL-адрес будет содержать слово «imacs» (предположим, вы ожидаете, что URL-адрес будет http://store.demoqa.com/products-page/product-category/imacs/), что приводит к сбою утверждения.

В вашем коде вы ожидаете, пока появится подменю «imacs», а затем нажмите на подменю и проверьте, загружен ли URL-адрес для параметра подменю. Это действие не приведет к такому же результату всегда, так как на загрузку страницы может потребоваться некоторое время, и вы, возможно, сможете извлечь предыдущий URL. Я предлагаю подождать, пока новая страница полностью загрузится, прежде чем выберете URL и заголовок страницы.

-1

Попробуйте следующее: {Он не использует Assert, но он печатает название и URL, только если они соответствия вашим записям подменю:

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

     } 



    } 

} 

}

+0

Этот код работает, но не всегда работает так, как вы ожидаете. Пройти тест не проверяет, ожидают ли все стороны. Я поставил ожидание, чтобы подождать, или это не помогло. –

+0

Я не получил: «Проходит тест, не проверяет, ожидают ли все стороны». Не могли бы вы объяснить? – kushal

+0

Моя проблема заключается в том, что он не прибыл в загруженный уже запущенный, проверяя правильную сторону и выдал ошибку. Я попытался подождать, но это не помогло. Я использовал waitForElementToBeDisplayed. –

Смежные вопросы