我的错误:
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中用python编写以下代码:
driver.implicitly_wait(10)
element = driver.find_element_by_link_text('Entrar')
element.click()
但是它会引发此NoSuchElementException。
答案 0 :(得分:1)
您是否尝试对首字母使用大写?像'Entrar'
而不是'entrar'
答案 1 :(得分:1)
您可以尝试driver.find_element_by_partial_link_text('entrar')
,因为链接中可能还有其他文本。我喜欢通过xpath获取元素。很简单如果您使用的是Firefox,则只需获取附加的xpath查找器即可找到网页上任何元素的xpath。
答案 2 :(得分:1)
要单击带有 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