无法在Python中使用Selenium WebDriver点击链接

1 投票
2 回答
2541 浏览
提问于 2025-04-21 08:07

我想点击下面这个链接:

<a class="user" href="/Kevin-Rose" action_mousedown="UserLinkClickthrough" id="__w2_L73qRYl_link" 
target="_blank">
         <span class="matched_term">Kevin Rose</span>
</a>

我尝试使用了以下代码:

 user = driver.find_element_by_xpath("//a[@class='user'][1]")
 user.click()

但是我遇到了以下错误:

ElementNotVisibleException: 信息:u'这个元素目前不可见,因此无法进行交互';堆栈跟踪:

我该如何解决这个问题呢?

在这里输入图片描述

2 个回答

0

试试下面的定位器

Xpath : "//span[text()='Kevin Rose']"

cssSelector : "a[href*='Kevin-Rose'] > span"

编辑-I

这是点击个人资料名称“Kevin Rose”的Xpath

"//div[contains(.,'Profile:') and contains(@class,'photo')]/span/a//span[text()='Kevin Rose']"
1

问题在于你在寻找一个元素的时候,它还没有出现。你需要先等待它出现。

下面是完整的代码,从登录、搜索到关注第一个 Kevin Rose 的链接:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


URL = "http://www.quora.com"
EMAIL = 'your email here'
PASSWORD = 'your password here'

driver = webdriver.Chrome()  # can be webdriver.Firefox() in your case
driver.get(URL)
wait = WebDriverWait(driver, 10)

# login
form = driver.find_element_by_class_name('regular_login')
username = form.find_element_by_name('email')
username.send_keys(EMAIL)

password = form.find_element_by_name('password')
password.send_keys(PASSWORD)

login_button = form.find_element_by_xpath('//input[@type="submit" and @value="Login"]')
login_button.click()

# search
search = wait.until(EC.presence_of_element_located((By.XPATH, "//form[@name='search_form']//input[@name='search_input']")))
search.send_keys('Kevin Rose')
search.send_keys(Keys.ENTER)

# follow the link
link = wait.until(EC.presence_of_element_located((By.LINK_TEXT, "Kevin Rose")))
link.click()

撰写回答