Selenium с Firefox-Изящно предоставляя контроль пользователю - PullRequest
0 голосов
/ 14 января 2019

Я использую Atlassian Jira в качестве инструмента отслеживания изменений. Я должен ввести несколько полей вручную и решил автоматизировать. Чтобы автоматизировать процесс создания проблемы Jira, я решил использовать Selenium с Firefox 60.0.

Когда я выполняю скрипт Selenium, он успешно открывает диалог создания вопроса, заполняет поля, которые можно автоматизировать. Затем сценарий останавливается, потому что есть поля сводки и описания, которые пользователь должен ввести вручную.

Я не вызываю webdriver.quit (), потому что я хочу, чтобы пользователь продолжил процесс создания. Однако, когда сценарий завершается, соединение с сервером Jira закрывается (я понимаю это, нажимая другие кнопки, и появляется предупреждение о том, что сервер Jira может быть недоступен и т. Д.), И кнопка «создать-отправить-отправить» перестает отвечать, даже если я заполняю все обязательные поля .

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

Я не вижу этой проблемы с Internet Explorer 11.0 (после завершения сценария я могу нажать кнопку «создать-отправить-отправить», и он создает), но его веб-драйвер глючит, весь сценарий завершается за 30 секунд, застревает в другой части каждый раз.

Я считаю, что причина в том, что компания использует сертификат Jira, который не был признан. Я не веб-разработчик, но я получаю ошибку SEC_UNKNOWN_ISSUER в Firefox, я считаю, что Firefox более строг, чем IE 11. Я думаю, что у Selenium есть механизмы для обхода мер безопасности Firefox, но как только сценарий завершается, я попадаю под действие Firefox, и это разрывает мое соединение с сервером Jira Несмотря на это, я добавил кусок кода, чтобы доверять неизвестным сертификатам. Вот код ниже;

binary = FirefoxBinary(<binary_path>)
profile = FirefoxProfile()
profile.accept_untrusted_certs = True
driver = Firefox(firefox_binary=binary, firefox_profile=profile)

fill_some_fields()
select_some_options()

Мой обходной путь для этой проблемы - добавление sleep (100) перед выходом из скрипта. Если пользователь нажимает кнопку «создать-отправить-отправить» в течение 100 секунд, это создает проблему. Если нет, сценарий завершается, и соединение Jira теряется. Но мне нужно лучшее решение, поскольку пользователю может потребоваться больше 100 или любая произвольная задержка.

1 Ответ

0 голосов
/ 14 января 2019

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

Мне нужно лучшее решение, так как пользователю может потребоваться больше 100 или любая произвольная задержка

Это решение пытается дождаться взаимодействия пользователей, просто добавив кнопку подтверждения, чтобы подтвердить выполнение задачи ...

Я вижу, что вы пытались использовать IE, поэтому я думаю, что вы используете Windows ...

В этом случае: Если вы просто ищете способ ожидания взаимодействия с людьми, вы можете использовать win32ui s MessageBox с win32con s MB_SYSTEMMODAL, чтобы создать окно с кнопкой подтверждения, чтобы подтвердить, что пользователь выполнил задачу автоматизации не удалось выполнить ...

Ее пример:

 import win32ui
 from win32con import MB_SYSTEMMODAL

 start = win32ui.MessageBox("fill empty fields", "Instructions", MB_SYSTEMMODAL)
 if start == 1:
     # do the rest of the automation...
     pass

Надеюсь, это поможет вам, по крайней мере, в части взаимодействия с пользователем ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...