Python — нажмите на меню sharepoint CSS, чтобы загрузить в Excel с помощью selenium.ms-core-menu-title

#python #css #selenium #sharepoint

#python #css — файл #селен #sharepoint

Вопрос:

Я пытаюсь автоматизировать следующий процесс

  1. Доступ к сайту Sharepoint
  2. Загрузка некоторых входных данных
  3. Запуск запроса, который извлекает некоторые данные
  4. Загрузите его в Excel через меню (Действия, Загрузка, Excel)

Я успешно выполнил шаги 1-3 и заставил его работать идеально, но я застрял на четвертом.

Я записал 3 нажатия в меню, необходимые для загрузки в Excel, получая следующие идентификаторы:

 css=#m_sqlRsWebPart_RSWebPartToolbar_ctl00_RptControls_RSActionMenu_ctl01_t > .ms-core-menu-arrow
css=#m_sqlRsWebPart_RSWebPartToolbar_ctl00_RptControls_RSActionMenu_Export > .ms-core-menu-title
css=#mp1_1_3_Anchor > #m_sqlRsWebPart_RSWebPartToolbar_ctl00_RptControls_RSActionMenu_EXCELOPENXML
  

Затем я создал следующий код:

 driver.find_element_by_css_selector(".ms-core-menu-arrow").click() # click on Actions menu
driver.find_element_by_css_selector('.ms-core-menu-title').click() # click Excel
driver.find_element_by_css_selector('#mp1_1_3_Anchor > #m_sqlRsWebPart_RSWebPartToolbar_ctl00_RptControls_RSActionMenu_EXCELOPENXML').click() # click Excel
  

Когда я запускаю его, он нажимает на меню действий (первый шаг), но затем он застревает со следующим сообщением:
«Не удается найти элемент: {«метод»:»селектор css»,»селектор»:».ms-core-menu-title»}

Я не понимаю, почему код может нажимать на первую кнопку «.ms-core-menu-Arrow», но не на вторую «.ms-core-menu-title»

Я попытался пропустить вторую строку кода и перейти непосредственно к третьей для загрузки в Excel, но это не удается таким же образом идентифицировать элемент css.

Любая помощь?

Спасибо!!

Комментарии:

1. Может быть, программа выполняется слишком быстро, и последний пункт меню еще не загружен?

Ответ №1:

Я не совсем понимаю, как это работает (я новичок в этом), но я снова попытался записать последовательность с помощью Selenium в Chrome, и вместо возврата кодов кнопок CSS он вернул «идентификаторы»

Я, наконец, нацелился на это с помощью следующего кода, и это сработало!!!

 driver.find_element_by_css_selector(".ms-core-menu-arrow").click() # click on Actions menue
time.sleep(6)
driver.find_element_by_id('mp1_0_2_Anchor').click() # click Download
driver.find_element_by_id('mp1_1_3_Anchor').click() # click Excel
  

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

Большое спасибо!!