Как перейти по ссылке на страницу с селеном Python - PullRequest
0 голосов
/ 14 декабря 2018

Моя ошибка:

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

У меня есть HTML ниже:

<a role="menuitem" href="/login" class="_yce4s5">
  <div class="_hgs47m">
     <div class="_10ejfg4u">
       <div>
         Entrar
       </div>
     </div>
 </div> 
</a>

Я нажимаю на ссылку entrar, следующий код в selenium with python:

driver.implicitly_wait(10)
element = driver.find_element_by_link_text('Entrar')
element.click()

Но возникает это исключение NoSuchElementException.

Ответы [ 3 ]

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

Вы можете попробовать driver.find_element_by_partial_link_text('entrar'), потому что, вероятно, в вашей ссылке есть другой текст.Мне нравится получать элемент по xpath.Это довольно легко.Если у вас есть Firefox, просто найдите дополнительный поиск xpath, чтобы найти xpath для любого элемента на веб-странице.

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

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

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

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a[role='menuitem'][href='/login'] > div > div > div"))).click()
    
  • Использование XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@role='menuitem' and @href='/login']//div[normalize-space()='Entrar']"))).click()
    
  • Примечание : необходимо добавить следующие операции импорта:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
0 голосов
/ 14 декабря 2018

Вы пытались использовать заглавные буквы для первой буквы?как 'Entrar' вместо 'entrar'

...