Подождите, чтобы в Selenium можно было нажимать кнопку мыши с помощью Python (iframe) - PullRequest
0 голосов
/ 27 октября 2019

Я пытаюсь получить доступ к следующей странице с помощью Selenium https://view.officeapps.live.com/op/view.aspx?src=https%3A//scholar.harvard.edu/files/torman_personal/files/samplepptx.pptx

Хотя страница правильно отображается в Firefox / Chrome, элементы загруженной страницы не найдены в Selenium. Приведенный ниже код приводит к сообщению «TimeoutException», так как элемент PptUpperToolbar.LeftButtonDock.PrintToPdf-Medium20 не найден.

Что мне не хватает?

# Load ppackages
import urllib.parse
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Define page
file = urllib.parse.quote("https://scholar.harvard.edu/files/torman_personal/files/samplepptx.pptx")
link = "http://view.officeapps.live.com/op/view.aspx?src=" + file

# Setup Webdriver 
driver = webdriver.Firefox()
driver.get(link)

# Define wait for "Print to PDF" button to show up
wait = WebDriverWait(driver, 20)
element = wait.until(EC.element_to_be_clickable((By.ID, "PptUpperToolbar.LeftButtonDock.PrintToPdf-Medium20")))

# Check page
# element.get_attribute('outerHTML')
# element.get_attribute('innerHTML')

# Click element
element.click()

1 Ответ

1 голос
/ 27 октября 2019

Кнопка находится внутри iframe. Вам нужно переключиться на iframe.

wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID, "wacframe")))
wait.until(EC.element_to_be_clickable((By.ID, "PptUpperToolbar.LeftButtonDock.PrintToPdf-Medium20"))).click() 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...