Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

PhantomJSDriver и метод get(Url)


(Sergey356) #1

Всем привет :slight_smile: Пишу простой тест с использованием PhantomJSDriver, который успешно падает. Покопавшись в проблеме, понял, что метод get(url) - “открывает” страничку, но она вообще не сверстана. Думаю он не подгружает .css и .js, которые отрисовывают все красиво. Возможно нужно запускать с нужным флагом. Кто нибудь сталкивался с такой проблемой?
Использую driver PhantomJs - 1.9.7

Код:

public class SmokeTest {
 private PhantomJSDriver driver;
  
@BeforeTest
        public void setUp() throws ConfigurationException, IOException {
            /* Инициализация драйвера*/
            DesiredCapabilities caps = new DesiredCapabilities();
            caps.setJavascriptEnabled(true);
            caps.setCapability("takesScreenshot",true);
            caps.setCapability("cssSelectorsEnabled", true);
            caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,phantomJsPath); 

            this.driver = new PhantomJSDriver(caps);


            driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);     
            driver.manage().timeouts().pageLoadTimeout(20, TimeUnit.SECONDS);         
            driver.manage().timeouts().setScriptTimeout(5, TimeUnit.SECONDS);   

            driver.get(mainPageUrl);

            getScreenShot();
        }

}

метод getScreenShot позволил мне увидеть, что страница в таком вот виде http://s020.radikal.ru/i721/1403/ce/5f2b731d0a9c.png


(Dmytro Makhno) #2

А что показывает ФФ или Хром драйвера?
Что если вставить слип (для эксперимента), между скриншотом и открытием странички. Get возвращает управление когда броузер трубит что страничка загрузилась, есть много возможностей получить этот ивент, а на самом деле внутренние скрипты еще работают. Соответственно сняв скриншот рано, получите “сырой” вариант.

Перечитав, не понял суть проблемы. Не рекомендовал бы ждать идеального скриншота, это все таки headless броузер. Что же падает, если код отработал и сделал скрин.


(Александр Таранков) #3

Что значит падает? Разве есть единственный возможный способ упасть? Когда пишешь “падает” надо обязательно стектрейс прикладывать. Первый раз баг пишешь?


(Sergey356) #4

Суть проблемы в том, что PhantomJS получает страницу с не отработанным JavaScript и начинает дальше делать проверки. Задержки не помогают.
На страничке при помощи JS подгружается нужный элемент, тест проверяет есть ли элемент на странице. Если есть - JS работает и тест пройден, если нету - тест проваливается. Тест все время проваливался с ошибкой в логе
[ERROR - 2014-03-11T06:41:21.215Z] WebElementLocator - _handleLocateCommand - Element(s) NOT Found: GAVE UP. Search Stop Time: 1394520081153

Я понял, что элемента нету. Сделанный скриншот помог мне убедиться в этом.