В настоящее время нет простого обходного пути для этой проблемы ни в одной из версий языковых привязок Selenium. Это известная проблема, в решении которой команда Selenium не заинтересована. По сути, это связано с архитектурой Safari и, следовательно, с архитектурой драйвера Safari.
JavaScript расширения драйвера Safari не знает о большинстве предупреждений, всплывающих окон и диалоговых окон, которые отображаются как модальные окна слоя Cocoa. Он также не может взаимодействовать с ними.
Способ есть, но он будет непростым, и никто его не делал.
Вам нужно будет использовать какао.
Поэтому в этом случае вы хотели бы использовать RubyCocoa. (или PyObjC, если вы использовали Python). Возможно, вам также понадобится дополнительное приложение, написанное на Objective-C. Хитрость заключается в том, чтобы использовать AX (API специальных возможностей) и отдельный процесс, чтобы наблюдать, есть ли предупреждение в виде переднего окна, и тыкать в его метки и текст кнопок, видимые для API AX. API-интерфейсы AX, вероятно, доступны в RubyCocoa через ScriptingBridge. Однако вам нужно будет добавить свое «приложение» в список вещей, которым разрешено управлять компьютером, на панели настроек безопасности.
При этом вы можете обнаружить окно и обработать его.
Он может быть довольно ненадежным на разных веб-сайтах, но если он построен правильно, вы сможете справиться с ожидаемыми условиями.
person
uchuugaka
schedule
02.04.2016