Как настроить специальные параметры прокси-сервера для удаленного веб-привода Selen с Python? - PullRequest
0 голосов
/ 05 июля 2018

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

Я начну с описания инфраструктуры, в которой я работаю. Он содержит несколько прокси-серверов, которые используют балансировщик нагрузки для пересылки аутентификаций пользователей на соответствующий прокси-сервер, которые напрямую связаны с активным каталогом. При аутентификации используются учетные данные и исходный IP-адрес, который использовался для входа в компьютер, с которого поступает запрос. Сервер кэширует IP-адрес и учетные данные в течение 60 минут. Я использую тестовую учетную запись специально для этого процесса и используется только на сервере модульного тестирования.

Я работаю над некоторой автоматизацией с помощью selenium webdriver на удаленном сервере, используя Docker-контейнер. Я использую Python в качестве языка сценариев. Я пытаюсь запустить тесты на внутренних и внешних веб-страницах / приложениях. Мне удалось пройти базовый тест на внутреннем веб-сайте с помощью следующего сценария:

Примечание: 10.1.54.118 - сервер, на котором размещается док-контейнер с веб-драйвером selenium

from selenium import webdriver

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

browser = webdriver.Remote(command_executor='http://10.1.54.118:4444/wd/hub', desired_capabilities=DesiredCapabilities.CHROME)
browser.get("http://10.0.0.2")

print (browser.find_element_by_tag_name('body').text)

bodyText = browser.find_element_by_tag_name('body').text

print (bodyText)

if 'Hello' in bodyText:
    print ('Found hello in body')
else:
    print ('Hello not found in body')

browser.quit()

Сценарий может получить доступ к внутренней веб-странице и распечатать весь текст на ней.

Однако у меня возникают проблемы при попытке запустить тестовые сценарии для внешних веб-сайтов.

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

Статьи и учебники, которые я пробовал:

Я попытался создать 4 версии скрипта для доступа к внешнему сайту, например google.com, и просто распечатать его текст. Каждый скрипт возвращает ошибку тайм-аута. Я извиняюсь за публикацию большого количества кода, но, возможно, сообщество сможет увидеть, где я ошибаюсь с аспектом кодирования.

Код 1:

from selenium import webdriver

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

PROXY = "10.32.51.169:3128" # IP:PORT or HOST:PORT
desired_capabilities = webdriver.DesiredCapabilities.CHROME.copy()

desired_capabilities['proxy'] = {
    "httpProxy":PROXY,
    "ftpProxy":PROXY,
    "sslProxy":PROXY,
    "socksUsername":"myusername",
    "socksPassword":"mypassword",
    "noProxy":None,
    "proxyType":"MANUAL",
    "class":"org.openqa.selenium.Proxy",
    "autodetect":False
    }
browser = webdriver.Remote('http://10.1.54.118:4444/wd/hub', desired_capabilities)
browser.get("https://www.google.com/")

print (browser.find_element_by_tag_name('body').text)

bodyText = browser.find_element_by_tag_name('body').text

print (bodyText)

if 'Hello' in bodyText:
    print ('Found hello in body')
else:
    print ('Hello not found in body')

browser.quit()

Мой код неверен? Могу ли я передать параметры конфигурации в докер chrome selenium webdriver или мне нужно собрать докер контейнер с предварительно настроенными параметрами прокси-сервера перед его сборкой? Я с нетерпением жду ваших ответов и любой помощи, которая может указать мне правильное направление.

С уважением,

смиренно преданный ученик

...