Невозможно найти элемент: {"method": "css selector", "selector": "[id =" identifierId "]"} в селене - PullRequest
0 голосов
/ 09 октября 2019

Я хочу автоматизировать загрузку в локальный и отправленный отчет (студия данных приборной панели) по электронной почте, но когда я запускаю код в студии данных, драйвер chrome открывается, показывает уведомление "Отчет не может быть просмотрен в данный момент или не имеетдоступ "что мне делать? вот мой код:

# login to datastudio & refresh the newest data
self.chrome_driver.get(self.url)  
self.chrome_driver.find_element_by_id("identifierId").send_keys(self.email + u'\ue007')
self.quick_wait.until(EC.element_to_be_clickable((By.NAME, "password"))).send_keys(self.password+u'\ue007')
self.quick_wait.until(EC.element_to_be_clickable((By.XPATH, self.report_refresh))).click() # refresh report data
time.sleep(15)
# download file to local path
try:
    ActionChains(self.chrome_driver).context_click(self.chrome_driver.find_element_by_xpath(self.product_export)).perform()
    self.quick_wait.until(EC.element_to_be_clickable((By.XPATH, self.product_download))).click()
    time.sleep(20)
    self.quick_wait.until(EC.element_to_be_clickable((By.ID, self.report_download))).click()
    self.chrome_driver.find_element_by_css_selector(self.report_to_pdf).click()
    time.sleep(20)
except AssertionError as error:
    print(error)
    self.chrome_driver.quit()

я получил сообщение об ошибке типа:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="identifierId"]"}

введите описание изображения здесь

введите изображениеописание здесь

введите описание изображения здесь

введите описание изображения здесь

1 Ответ

0 голосов
/ 09 октября 2019

Может быть проблема с загрузкой страницы load.try при добавлении неявного или явного ожидания.

1.Применяется обязательное ожидание (неявное или явное ожидание)

Неявное ожидание

driver.implicitly_wait(15)

Явное ожидание:

wait = WebDriverWait(driver, 10)
wait.until(ec.visibility_of_element_located((By.XPATH, "//*[contains(@class,'result-list-entry')]")))

Пример:

self.chrome_driver.implicitly_wait(15)
self.chrome_driver.get(self.url)
self.quick_wait.until(EC.element_to_be_clickable((By.ID, "identifierId")))
self.chrome_driver.find_element_by_id("identifierId").send_keys(self.email + u'\ue007')
self.quick_wait.until(EC.element_to_be_clickable((By.NAME, "password"))).send_keys(self.password+u'\ue007')

2. Проверьте, является ли элемент дочерним по отношению к элементу iframe. если это так, переключитесь на iframe и попробуйте нажать

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