Найти - Пользователи
Полная версия: Selenium. Есть ли альтернативы? стоит ли с ним работать через python api?
Начало » Web » Selenium. Есть ли альтернативы? стоит ли с ним работать через python api?
1
buddha
Здравствуйте. Есть потенциальная задача работать с сайтом через selenium. Делать тесты…
Если кто-либо работал с ним, подскажите пжлст, есть ли на чистом питоне альтернатива?
Стоит ли работать с selenium через python api? какие могут быть минусы при таком варианте?
Сам я есстественно щас всё это поставил и гугл…
slav0nic
windmill, но он умер и автор вроде как сам юзает selenium
так что без вариантов
d1ffuz0r
вместо стандартного webdriver возьмите webdriverplus
buddha
Спасибо!

Помогите ситуацию прояснить, пжлст. В родном модуле селениума есть драйвера HtmlUnit/HtmlUnitWithJS.
Документацию webdriverplus прочитал полностью, в поддерживаемых драйверах нету HtmlUnitWithJS(скорее всего с ним и придётся работать).
Может там этот драйвер как то обёрнут по своему?
Если -нет, то есть приемлимые способы обхода этой ситуации?

И сильно ли уступает реализация python API реализации Java API?

Пока писал, посмотрел код повнимательнее…
Вот начало класса HtmlUnit в webdriverplus(причем класс _Remote наследуется из родного пакета selenium):
from selenium.webdriver.remote.webdriver import WebDriver as _Remote
class HtmlUnit(WebDriverMixin, _Remote):
    _selenium = 'selenium-server-standalone-2.22.0.jar'
    _selenium_url = 'http://selenium.googlecode.com/files/' + _selenium
    _auto_install = True
    def __init__(self, *args, **kwargs): # ведь можно переопределить этот метод?
        self._perform_auto_install()
        self._autorun_selenium_server()
        super(HtmlUnit, self).__init__("http://localhost:4444/wd/hub",
                                       DesiredCapabilities.HTMLUNIT, **kwargs)
    # остальные методы ...

Если сделать так, получится ли ожидаемая поддержка яваскрипт???:
test1.py
from webdriverplus import HtmlUnit
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
class myHtmlUnitWithJS(HtmlUnit):
    def __init__(self, *args, **kwargs):
        super(HtmlUnit, self).__init__("http://localhost:4444/wd/hub",
            DesiredCapabilities.HTMLUNITWITHJS, **kwargs) # Просто заменил предпочтение...
d1ffuz0r
честно говоря не пробовал HtmlUnitWithJS, только Chrome/Firefox/Opera. в питоновской версии я не нашёл методов ждущих появление элемента, в либе Java и документации они есть, поэтому пришлось писать свой костыль (в webdriverplus он уже есть)
buddha
А названия этих методов не скажете(из webdriverplus)?
d1ffuz0r
оно включено по умолчанию https://github.com/tomchristie/webdriverplus/blob/master/webdriverplus/selectors.py#L72

ещё помогает метод implicitly_wait у сессии http://seleniumhq.org/docs/04_webdriver_advanced.html#implicit-waits, нам было его достаточно, но нужно подогнать под браузер. фф медленнее грузит страницы, но js стабильно работает. хром быстро грузит страницы, но js не всегда успевает загрузиться и бывают глюки
buddha
благодарю…
lorien
> честно говоря не пробовал HtmlUnitWithJS, только Chrome/Firefox/Opera. в питоновской версии я не нашёл методов ждущих появление элемента

А это не оно? http://selenium.googlecode.com/svn/trunk/docs/api/py/webdriver_support/selenium.webdriver.support.wait.html
Hello_world
Возможно, phantomjs(ghost.py)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB