Python не может найти элемент

#python #selenium

#python #селен

Вопрос:

Я пытаюсь нажать кнопку. Я пробовал много методов, но не работал

Итак, мой вопрос в том, как я могу нажать кнопку «Я согласен»?

пожалуйста, смотрите изображение

Я попробовал этот метод

Первый:

 browser.switch_to.frame(browser.find_element_by_id('introAgreeButton'))
vote = browser.find_element_by_xpath('//*[@id="introAgreeButton"]')
vote.click()
  

Второй:

 accepted = browser.find_elements_by_id('introAgreeButton')
browser.execute_script("arguments[0].click();", accepted )
  

Третий (классический):

 accepted = browser.find_elements_by_id('introAgreeButton')
accepted.click()
  

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

1. Какие ошибки вы получили?

2. @arundeepchohan selenium.common.exceptions. Исключение NoSuchElementException: Сообщение: нет такого элемента: не удается найти элемент: {«метод»: «селектор css»,»селектор»:»[id =»introAgreeButton»]»}

3. Сначала проверьте, есть ли он в каких-либо фреймах.

4. @arundeepchohan на самом деле я добавил скриншот. не могли бы вы проверить?

5. Просто проверьте источник страницы на наличие любых фреймов.

Ответ №1:

Приведенный выше ответ от sykezlol не сработал для меня, но этот код сработал:

             browser.switch_to_default_content()
            browser.switch_to.frame(browser.find_elements_by_tag_name('iframe')[0])
            browser.implicitly_wait(1)
            browser.find_element_by_id('introAgreeButton').click()
            browser.switch_to.default_content()
  

Я использую здесь «браузер» вместо «драйвера».

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

1. browser.switch_to_default_content() теперь browser.switch_to_default_content

Ответ №2:

Вы можете использовать полный xpath, чтобы получить полный путь к iframe. Я получил ваш скрипт, работающий следующим образом:

 driver.get('https://www.google.com')


driver.switch_to.frame(driver.find_element_by_xpath('/html/body/div/div[4]/div[3]/div/div[2]/span/div/div/iframe'))
element = driver.find_element_by_id('introAgreeButton')

element.click()
  

Как вы можете видеть, я использую driver.switch_to.frame — внутри этого фреймового переключателя я найду элемент iframe, используя полный xpath. Вы можете найти полный путь, щелкнув правой кнопкой мыши при его проверке и выбрав «Копировать -> Полный Xpath».

Я надеюсь, что это поможет, в противном случае, пожалуйста, спрашивайте 🙂