Откройте приложение (например, zoom.us) с помощью Selenium Webdriver - PullRequest
1 голос
/ 05 мая 2020

Я хочу иметь возможность использовать чистый selenium webdriver, чтобы открыть ссылку масштабирования в Chrome, а затем перенаправить меня в приложение zoom.us.

Когда я выполню это:

from selenium import webdriver


def main():
    driver = webdriver.Chrome()
    driver.get("https://zoom.us/j/000-000-000")


main()

Я получаю всплывающее окно с сообщением:

https://zoom.us wants to open this application.

, и мне нужно нажать кнопку с названием open zoom.us, чтобы открыть приложение.

Есть ли способ нажать это всплывающее окно кнопку через селен. Или есть какой-нибудь другой способ открыть масштабирование с помощью chromedriver?

ПРИМЕЧАНИЕ. Я хочу использовать только селен. Мне удалось реализовать pyauto gui для нажатия на кнопку, но это не то, что я ищу.

Спасибо!

Ответы [ 2 ]

1 голос
/ 07 мая 2020

Решение для Java:

driver.switchTo().alert().accept();

Решение для Python:

driver.switch_to.alert.accept()
0 голосов
/ 25 июня 2020

По этой проблеме много повторяющихся вопросов. Вот один из их , и совершенно очевидно, что селен не способен выполнить такую ​​работу, поскольку он взаимодействует только со страницей chrome. Я раньше тоже сталкивался с этой проблемой, и вот мое решение. Это может выглядеть действительно непрофессионально, но, к счастью, это работает.

Лог c моего решения состоит в том, чтобы изменить настройку chrome, чтобы пропустить всплывающее окно и напрямую открыть нужное приложение. Однако команда Chrome удалила эту функцию в последней версии по некоторым причинам, и нам нужно вернуть ее вручную. Затем мы знаем, что каждый раз, когда селен начинает делать то, что он делает, он открывает новую страницу Chrome без каких-либо индивидуальных настроек, как и страница инкогнито. Поэтому нам нужно что-то сделать, чтобы позволить selenium открыть страницу Chrome с вашими индивидуальными настройками, чтобы мы могли убедиться, что всплывающее окно, которое мы вручную изменили на пропуск, можно успешно пропустить.

  1. Введите следующий код в свой терминал.

    defaults write com.google.Chrome ExternalProtocolDialogShowAlwaysOpenCheckbox -bool true
    

    Это позволяет вам изменить настройку пропуска всплывающих окон, которая является функцией Chrome команда удалена.

  2. Перезапустите Chrome и откройте страницу масштабирования (или любое другое приложение), чтобы отобразить всплывающее окно. Если вы выполните 1-й шаг правильно, вы увидите, что рядом с «Open Zoom.us» отображается флажок, в котором говорится, что если вы отметите его, chrome откроет это приложение без запроса, то есть пропустить всплывающее окно для это приложение.

  3. Теперь нам нужно позволить селену открывать Chrome с нашими индивидуальными настройками. Для этого наберите «chrome: // версия» во вкладке поиска вашего обычного Chrome (неавтоматизированная страница, открытая селеном). Go в «Путь к профилю» и скопируйте этот путь без последнего слова «по умолчанию». Например:

    /Users/MYNAME/Library/Application Support/Google/Chrome/Default
    

    Это мой путь к профилю, но я копирую только все, кроме последнего слова Default, так что это то, что мне нужно скопировать.

    /Users/MYNAME/Library/Application Support/Google/Chrome/
    

    Это для Ma c пользователей, но для Windows отличается только путь (начинается с C: // или что-то в этом роде), шаги такие же.

  4.  from selenium import webdriver
     from selenium.webdriver.common.keys import Keys
     from selenium.webdriver.chrome.options import Options
    
     option = Options()
     option.add_argument('THE PATH YOU JUST COPIED')
     driver = webdriver.Chrome(executable_path='YOUR PATH TO CHROMEDRIVER', options=option)
    
     driver.get("google.com") #Or anything else
    

    Мы используем «параметры», позволяющие селену открывать страницу с нашим настроенным профилем. Теперь вы увидите, что Selenium открывает страницу Chrome со всем профилем вашей учетной записи, настройками, и она выглядит как обычная страница chrome.

  5. Запустите свой код. Но перед этим не забудьте закрыть ВСЕ CHROME сессий вручную. Для Ma c убедитесь, что под значком Chrome нет точки, указывающей на то, что Chrome не работает ни при каких обстоятельствах. ЭТОТ ШАГ КРИТИЧЕСКИЙ, иначе селен откроет страницу chrome и просто остановится на ней.

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

...