Как скачать файл из селена python при вызове ng-click - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь эмулировать загрузку файла с веб-сайта с помощью Selenium Python при нажатии кнопки, определенной с помощью ng-click.

Файл HTML содержит следующее:

<div class="col-lg-6 btn-group">
  <br/>
  <br/>
  <input type="button" ng-click="exportToExcel('#exportable')" class="btn-text btn-link export-main" value="Export" />
</div>

Код, который я ставлю после проверки разных опций, ничего не делает.

I

Когда я использую Selenium IDE, единственный записанный шаг - это "нажать" на "css =btn-text "и это работает, но с драйвером chrome и Selenium в Python ничего не загружается.

У меня есть этот код, чтобы убедиться, что Chrome Driver загружает файл.(Я проверял на других сайтах, и это работает)

 options = webdriver.ChromeOptions()
          prefs = {'download.default_directory' : self.download_location,
              'download.prompt_for_download': False,
              'download.directory_upgrade': True,
              'safebrowsing.enabled': False,
              'safebrowsing.disable_download_protection': False}
          options.add_argument('--headless')
          options.add_experimental_option('prefs', prefs)
          driver = webdriver.Chrome(chrome_options=options, 
                                   service_args=['--verbose', '--log-path=/tmp    /chromedriver.log'])

Вот код, который я использую, чтобы нажать на кнопку, чтобы загрузить файл:

export_button = WebDriverWait(self.webdriver,10).until(ec.visibility_of_element_located((By.CLASS_NAME, "export-main"))) 

 ActionChains(self.webdriver)\
  .click(export_button)\
  .move_to_element(export_button)\
  .perform()

Я ожидаюзагрузить файл Excel из указанной папки в Chrome Driver, но кажется, что Selenium и Angular не очень хорошо играют вместе.

Есть ли другой способ вызова функции "ExportToExcel" с использованием Javascript?

Ответы [ 2 ]

0 голосов
/ 23 апреля 2019

Я получил ответ на проблему:

просто позвоните в javascript, чтобы нажать «кнопку экспорта» следующим образом:

self.webdriver.execute_script("arguments[0].click();", export_button)
0 голосов
/ 10 апреля 2019

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

driver.execute_script("exportToExcel('#exportable');")

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

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