2016-12-02 2 views
0

Использование селена WebDriver Java, я пытался проверить, что каждый продукт перечислены на этой странице: https://www.gumtree.com/cars/london несет полную информацию продукта, как год, объем двигателя и т.д. Я попытался возвращенная исходный код страницы с кодом: `Может ли webdriver проверять несколько данных на веб-странице динамически?

driver.getPageSource(); 

но вывод слишком многословный. Один из способов, которым я стремлюсь достичь этого, - это, возможно, утвердить или getText каждой информации о продукте для каждого перечисленного продукта на странице, но это вызовет проблемы по мере обновления страницы. Есть ли умный и динамичный способ достижения поставленной задачи?

+0

Для того, чтобы проверить что-то правильно, вы должны иметь что-то, чтобы сравнить его с. Таким образом, это зависит от того, что вы пытаетесь проверить. Если вы пытаетесь проверить, что год, пробег, тип двигателя, размер двигателя все есть ... есть способы сделать это. Что конкретно вы пытаетесь сделать? – JeffC

+0

Я пытаюсь проверить, что каждый продукт имеет полную информацию о продукте - год, тип топлива и т. Д. –

ответ

0

Из того, что я могу сказать, продукты, перечисленные на этой странице, не обновляются, если браузер не обновлен, поэтому не следует беспокоиться о том, как выполнять утверждения по содержимому каждого продукта.

Вы можете сохранить список всех включенных в список результатов в и перебирать их:

@Test 
    public void checkProductFields() throws Exception { 
     WebDriver driver = getDriver(); 

     driver.get("https://www.gumtree.com/cars/london"); 

     List<WebElement> productList = driver.findElements(By.xpath("//ul[@data-q='featuredresults' or @data-q='naturalresults']/li/article")); 

     for (WebElement product : productList) { 
      String year = product.findElement(By.xpath(".//span[@itemprop='releaseDate']")).getAttribute("innerHTML"); 
      String mileage = product.findElement(By.xpath(".//span[@itemprop='vehicleMileage']")).getAttribute("innerHTML"); 
      String fuelType = product.findElement(By.xpath(".//span[@itemprop='vehicleFuelType']")).getAttribute("innerHTML"); 
      String engineSize = product.findElement(By.xpath(".//span[@itemprop='vehicleEngineSize']")).getAttribute("innerHTML"); 

      //Assertions... 
     } 
    } 
+0

Я попробую это, спасибо. Когда вы говорите // Утверждения ..., я предполагаю, что мне нужно продолжить выполнение утверждений о содержании каждого продукта. Правильно? Смогу ли я загрузить или распечатать все детали продукта на консоль, таким образом? –

+0

Исправить. Вы должны утверждать, что для каждого конкретного продукта вы возвращаете значения, а также выполняете отдельные утверждения для каждого типа (например, год неотрицателен, 4 цифры, а не в будущем и т. Д.). Вы можете использовать 'System.out.println()', чтобы убедиться, что вы извлекаете правильные строки перед продолжением. –

+0

Я нахожу это полезным. Благодарю. Я пытаюсь использовать тот же подход, который вы указали выше на подобной веб-странице: https://www.auto1.com/en/our-cars, но я не могу сгенерировать xpath для строки, использовать в цикле for, например, предыдущий сайт, и это связано с тем, что обе страницы имеют разный макет для деталей продукта. Я буду рад, если вы сможете помочь с этим –

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