selenium.common.exceptions.NoSuchElementException: Сообщение: нет такого элемента: невозможно найти элемент с помощью Selenium и Python - PullRequest
0 голосов
/ 29 декабря 2018

Невозможно взаимодействовать с href link.

Испытания кода:

browser = webdriver.Chrome() 
browser.implicitly_wait(5) 
browser.get(URL) 
webbrowser.open(URL) 
#if Size == 'Large': 
ClickS =browser.find_element_by_id('product-select').click() 
SizeS = browser.find_element_by_xpath("//option[@value='12218866696317']").click() 
#Send to cart 
AddtoCart = browser.find_element_by_css_selector("input[type='submit']").click() 
GotoCart = browser.find_element_by_partial_link_text("Cart").click()

Снимок кода и ошибки:

enter image description here

HTML:

<a href="/cart" class="cart-heading">Cart</a>

Снимок HTML:

enter image description here

Ответы [ 2 ]

0 голосов
/ 29 декабря 2018

Это сообщение об ошибке ...

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element {"method":"link text","selector":"Cart"}

... означает, что ChromeDriver не смог найти нужный элемент в соответствии со строкой:

GotoCart = browser.find_element_by_link_text("Cart").click()

Решение

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

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

    WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Cart"))).click()
    
  • Использование CSS_SELECTOR:

    WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "section#header a.cart-heading[href='/cart']"))).click()
    
  • Использование XPATH:

    WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, "//section[@id='header']//a[@class='cart-heading' and @href='/cart']"))).click()
    
  • Примечание : необходимо добавить следующий импорт:

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

PS: подробное обсуждение можно найти в Selenium «selenium.common.exceptions.NoSuchElementException» при использовании Chrome

0 голосов
/ 29 декабря 2018

Ошибка находится в нижней части трассировки стека, она не может найти элемент по тексту ссылки, которую вы ему дали.Вероятно, это та же проблема, что и у этого человека, когда питон шел слишком быстро, а страница загружена не полностью: Как правильно использовать find_element_by_link_text (), чтобы не вызывать NoSuchElementException?

Итакпросто добавьте browser.implicitly_wait(10) сразу после строки, в которой вы установили browser.

...