Нажмите на span в selenium python

#html #python-3.x #selenium #selenium-webdriver

#HTML #python-3.x #selenium #selenium-webdriver

Вопрос:

Я знаю, что люди здесь говорят, что это дубликат, ни один из ответов в сети мне не помог. Ниже приведен мой HTML-код

 
<div class="Headline"><div class="card mt15"><!-- react-empty: 350 --><div class="cardPad"><div class="widgetHead"><span class="widgetTitle">What do you want to wish </span><span class="edit icon">Edit</span></div><div class="widgetCont"><div class="prefill"><div> Good Morning</div></div></div></div></div></div>
  

В пользовательском интерфейсе есть значок карандаша / пера с классом «значок редактирования», который находится рядом с текстом «Заголовок», я хочу нажать на этот значок карандаша, и когда откроется всплывающее окно, мне нужно обновить его текстом «Доброе утро». Я пытаюсь достичь этого, используя selenium в python.

Я попытался найти с помощью CSS_SELECTORS и найти по class_name, но я не могу щелкнуть по нему, может кто-нибудь, пожалуйста, посоветуйте мне это.

 browser.find_element_by_css_selector('.Headline > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > span:nth-child(2)').click()
  

Я пробовал приведенный выше код, но я получаю ошибку

 selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <span class="edit icon">...</span> is not clickable at point (478, 521). Other element would receive the click: <div class="ppContainer">...</div>
  (Session info: chrome=84.0.4147.135)
  

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

1. Как вы опробовали JavaScript для click like driver.execute_script("arguments[0].click();", element)

2. На самом деле нет, я не знаю, как работает JS, поэтому просто набираю dind по имени класса и селекторам css

3. Вы можете использовать тот же элемент, который вы находите с помощью css-селектора find_element_by_css_selector('.Headline > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > span:nth-child(2)') . Просто передайте этот элемент в ранее упомянутом Java script

4. Спасибо Kuldeep, в нижней части страницы было всплывающее окно с файлами cookie, поэтому я не смог нажать на кнопку «Желание», я справился с этим, и все работало нормально

Ответ №1:

Похоже, что ваш элемент отсутствует на экране окна и перекрывается каким-либо div. Попробуйте щелкнуть javascript.

 pen = driver.find_element_by_xpath("//span[text()=‘Edit’]")
driver.execute_script("arguments[0].scrollIntoView();",pen)
driver.execute_script("arguments[0].click();",pen)
  

Выше будет выделен элемент и нажмите на него.

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

1. Спасибо, Рахул, в нижней части страницы появилось всплывающее окно с файлами cookie, поэтому я не смог нажать на кнопку «Желание», я справился с этим, и все работало нормально