Я использую Selenium Webdriver для python, в настоящее время в браузере Chrome, и я застрял в какой-то странной ситуации с этой конкретной библиотекой. Я хочу извлечь некоторую информацию в Pipedrive (в настоящее время могу войти в систему и выполнить поиск определенного c отведения внутри веб-страницы, но когда я пытаюсь извлечь имя человека, у меня возникает следующее исключение:
Traceback (most recent call last):
File "C:/Users/ppbbd/PycharmProjects/fastTasks/pipeforwpp.py", line 27, in <module>
info_box = driver.find_element_by_xpath("//div[@class='widget personFields fieldsView '][@data-state='read']")
File "C:\Users\ppbbd\AppData\Local\Continuum\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 394, in find_element_by_xpath
return self.find_element(by=By.XPATH, value=xpath)
File "C:\Users\ppbbd\AppData\Local\Continuum\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 978, in find_element
'value': value})['value']
File "C:\Users\ppbbd\AppData\Local\Continuum\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Users\ppbbd\AppData\Local\Continuum\anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//div[@class='widget personFields fieldsView '][@data-state='read']"}
(Session info: chrome=80.0.3987.149)
Фрагмент кода здесь: (Информация, которую я хочу извлечь, находится внутри info_box = ...
)
for i in range(0, 195):
search_box = driver.find_element_by_name('needle')
if data_abril.iloc[i+1, 1] == 'N/A':
pass
else:
escola = int(data_abril.iloc[i+1, 1])
search_box.send_keys(str(escola))
time.sleep(2)
search_box.send_keys(Keys.DOWN)
search_box.send_keys(Keys.RETURN)
time.sleep(10)
info_box = driver.find_element_by_xpath("//div[@class='widget personFields fieldsView '][@data-state='read']")
# info_box_a = driver.find_element_by_xpath("//div[@class='fieldsList read']")
Я искал об этом исключении, и одна из основных причин была связана с динамическими c страницами и загрузкой элемента время на странице не совпадало, поэтому я использовал time.sleep(10)
, чтобы проверить, так ли это, но я все еще получил ошибку, показанную выше.
ВАЖНОЕ ПРИМЕЧАНИЕ: Вот фрагмент html, если вы посмотрите в конце кода, комментарий info_box_a = driver.find_element_by_xpath("//div[@class='fieldsList read']")
работает нормально, и, как вы можете видеть на изображении, этот конкретный div находится внутри проблемного c, так как может ли Selenium быть в состоянии найти родителя, но его потомка? HTML SNIPPET
ИСТОЧНИК СТРАНИЦЫ: Я не смог опубликовать его здесь, потому что это обойдет ограничение в 30 тысяч символов и исходная страница находится внутри области входа в систему, поэтому даже если я опубликую URL, если у вас нет учетной записи на Pipedrive, вы не сможете увидеть исходный код страницы (поправьте меня, если я ошибаюсь). Любые предложения, чтобы показать еще один html фрагмент Я могу обновить вопрос.
ОБНОВЛЕНИЕ:
Как вы видите по ссылке ниже, указан c информация о значении телефонного класса абонента равна class="item read
phoneField editable
"
с таким большим количеством пробелов на нем, влияет ли эта сфера на нахождение элемента? или class="item read phoneField editable"
означает то же самое?
Важно HTML Фрагмент