@HartX

Как нажать на кнопку «см. ещё» в вакансиях inkedin с помощью selenium?

Здравствуйте, мне необходимо получить описание вакансии с сайта linkedin, но я столкнулся с проблемой, которую я не могу решить. Есть кнопка. Её код выглядит так:
603fe20a2b6a7798608140.jpeg
Я перепробовал кучу вариантов от обычного
self.driver.find_element_by_id('ember57').click()
до
self.driver.execute_script("document.getElementsByClassName('t-14 t-black--light t-bold artdeco-card__action artdeco-button artdeco-button--icon-right artdeco-button--3 artdeco-button--fluid artdeco-button--tertiary ember-view').click();")

WebDriverWait(self.driver, 1000000).until(EC.element_to_be_clickable((By.ID, 'ember57'))).click()

WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.t-14 t-black--light t-bold artdeco-card__action artdeco-button artdeco-button--icon-right artdeco-button--3 artdeco-button--fluid artdeco-button--tertiary ember-view"))).click()

Но не один из них мне не помог. Можете хотя бы подсказать, где я ошибаюсь и как нажать на эту кнопку? Заранее спасибо.
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
nullnull
@nullnull
Я вам подкину парочку мыслей, вдруг что-то получится:

1. Сейчас веб-фреймворки эти id генерируют на лету, т.е. динамический id получается. Либо другой XPath использовать, либо селекторы, либо XPath по типу "//путь до элемента/тег[contains(@id, "ember")]".Такая же проблема может быть с классами (там где используются числа или же какие-то непонятные символьные генерации).

Чтобы проверить что видит selenium: просто запустите в дебаге, поставьте точку остановки и f12 (или ctrl + shift + c) по коду элемента в браузере. Возможно, вы увидите, почему клик не отрабатывает.
Так же вы можете в браузере запустить поиск по XPath (зайти в просмотр кода элемента f12 и там уже ctrl + f) и проверить - корректный ли XPath для selenium.

2. Возможно wait_and_click работает не совсем так. Однажды у меня была такая история, когда это ожидание не работало. Голову сломала, но хорошего решения не нашла. Оказалось, самое простое, что могло бы прийти в голову, помогло. Я сделала цикл while и в нём в течение 5-10 секунд пыталась нажать, если не нажимается, а я точно знаю, что такая кнопка на странице есть, то я делала питоновский time sleep(1).
Проблема была в том, что библиотеки для отработки кнопки прилетали позже, возможно фоном, хотя страница загружена, JS тоже.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@GeneD88
QA
Как уже упомянули, id могут выставляться динамически. А вот текст у элемента будет одинаковый. Делайте xpath по тексту. Ну, либо //footer/button
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы