当前位置: 首页 > 知识库问答 >
问题:

如何使用selenium python点击javascript超链接元素

鞠嘉誉
2023-03-14

我的目标是使用selenium python来点击这个超链接元素,下面是我尝试过的3个解决方案,没有一个有效。

<div class="navigation_item">
<a href="javascript:;" onclick="navigationMenu('students');">Students (165)</a>
</div>

解决方案1:

driver.find_element_by_link_text('Students (165)').click()
driver.find_element_by_xpath('/html/body/div[2]/div[1]/div[3]/div/div[1]/div[3]/div[7]/a').click()
javascript = "document.getElementsByClassName('navigation_item')[3].click();"
driver.execute_script(javascript)

错误消息:selenium.common.exceptions.javascriptException:消息:javascript错误:无法读取未定义的属性“click”

那么,每个解决方案都出了什么问题呢?我怎么才能让它起作用?

共有1个答案

钱德海
2023-03-14

要单击带有text as Students(165),您必须将WebDriverWait导入element_to_be_clickable(),您可以使用以下任何一种定位器策略:

>

  • 使用link_text:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Students (165)"))).click()
    

    使用partial_link_text:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, "Students ("))).click()
    
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.navigation_item>a[onclick^='navigationMenu'][onclick*='students']"))).click()
    
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='navigation_item']/a[starts-with(@onclick, 'navigationMenu') and contains(., 'Students')]"))).click()
    

    注意:您必须添加以下导入:

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

  •  类似资料:
    • 我有以下HTML+js代码: 您能解释一下如何重构以下代码,在单击href code后执行,但#不添加到URL并且页面不应该重新加载的代码吗?

    • 我在尝试使用Selenium WebDriver单击超链接时遇到了一个问题。我尝试使用CssSelector和XPath,但似乎都不起作用。我想做的就是点击谷歌文本。

    • 问题内容: 我只是想知道如何使用JavaScript模拟元素的点击。 目前我有: 但这不起作用:( 有任何想法吗? 问题答案: 这是我煮的 这很简单,但是有效: 用法:

    • 问题内容: 我正在FireFox中使用Selenium的IDE进行一些测试,我希望Selenium单击第二个链接(Text2)。知道我该怎么做吗?不幸的是,我无权访问HTML并且无法对其进行修改。记录功能似乎没有注册点击。 该代码附在下面。提前致谢! 问题答案: 硒也支持定位器。如果您知道确切的链接文本,则可以使用此定位器,但不能使用其他定位器。因此,对于上述示例:或。(有关其他定位器,请参见此网

    • 问题内容: 如何使用链接调用JavaScript代码? 问题答案: 要么 编辑: 上面的回答确实不是一个好的解决方案,自从我最初发布以来,已经学到了很多有关JS的知识.

    • 我有一个html链接