Нет такого элемента: невозможно найти ошибку элемента при нажатии кнопки с использованием Selenium и Python - PullRequest
1 голос
/ 02 августа 2020

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

Вот как код html на сайте:

снимок

И это строка в моем коде:

pop_up = driver.find_element_by_xpath(("//*[@id='bounceRatingOrderBtn']")).click()

Я много часов пытался найти решение, но у меня ничего не вышло.

Ответы [ 3 ]

0 голосов
/ 02 августа 2020
• 1000 здесь ') driver.switch_to.default_content ()
0 голосов
/ 03 августа 2020

Желаемый элемент - это элемент AJAX, поэтому, чтобы щелкнуть по элементу, вы должны вызвать WebDriverWait для element_to_be_clickable(), и вы можете использовать любой из следующих Стратегии локатора :

  • Использование CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "span#bounceRatingOrderBtn[name='bounceRatingOrderBtn']"))).click()
    
  • Использование XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[@id='bounceRatingOrderBtn' and @name='bounceRatingOrderBtn']"))).click()
    
  • Примечание : Вам необходимо добавить следующие импорты:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

Ссылки

Вы можете найти пару соответствующих обсуждений на NoSuchElementException в:

0 голосов
/ 02 августа 2020

Появляется ли всплывающая кнопка в другом кадре или в новом окне? Проверьте это и переключитесь на фрейм или новое окно по мере необходимости, а затем выполните операцию с вашей кнопкой.

Я не знаком с python селеном, я могу дать java коды селена для переключателя фрейма и окна, пожалуйста, поймите логику / код и найдите python версию кода самостоятельно, товарищ.

Java версия кода для переключателя кадров -

driver.switchTo().frame("yournewframename");

Java версия кода для Оконный переключатель -

        for(String handle:driver.getWindowHandles()) 
        {
            String windowtitle = driver.switchTo().window(handle).getTitle();
            if(windowtitle.contains("your new pagetitle"))
            {
                System.out.println("Title after switching "+driver.getTitle());
                break;  
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...