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

Код работает в Firefox, но не работает в PhantomJS

webdriver
Теги: #<Tag:0x00007f7b634bfa10>

(Валерий) #1

Имеется следующий код:

-- coding: utf-8 --

from selenium import webdriver

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


def waitForLoad(driver):
    try:
        element = WebDriverWait(driver, 10, 100)\
            .until(EC.visibility_of_element_located((By.CLASS_NAME, 'email')))
    finally:
        print (driver.find_element_by_css_selector('.email').get_attribute('textContent'))
        driver.close()


def main():
    driver  = webdriver.Firefox()
    # driver = webdriver.PhantomJS(executable_path=r'C:\bin\phantomjs\bin\phantomjs.exe')
    driver.get("https://dropmail.me/ru/")
    waitForLoad(driver)

if __name__ == '__main__':
    main()

Когда использую Firefox, то проблем с кодом не имеется. Как только использую PhantomJS, то сразу появляется ошибка:

selenium.common.exceptions.NoSuchElementException: Message: {“errorMessage”:“Unable to find element with css selector ‘.email’”,…

и т.д.

Подскажите, что я не учитываю?
Пока только начинающий.
Заранее благодарен.


(Dema W) #2

Сначала проверте одинаково ли отображается email для firefox и phantomjs


(Валерий) #3

В Firefox можно посмотреть в Firebug, а вот каким образом можно посмотреть отображение в PhantomJS, подскажите, пожалуйста?


(Dema W) #4

попробуйте так http://phantomjs.org/api/webpage/property/content.html


(Валерий) #5

Спасибо. Применил.
Не могу найти даже намека на ток кусок страницы с данным элементом. Возможно он позже подгружается. Но ведь у меня по коду стоит условие ожидания, что элемент присутствует в DOM и виден (EC.visibility_of_element_located((By.CLASS_NAME, ‘email’))). Значит этот элемент уже появился.
Объясните, пожалуйста.