AttributeError:“WebElement”对象没有属性“单击”错误尝试使用 Selenium Python 单击链接

Posted

技术标签:

【中文标题】AttributeError:“WebElement”对象没有属性“单击”错误尝试使用 Selenium Python 单击链接【英文标题】:AttributeError: 'WebElement' object has no attribute 'Click' error trying to Click on a link using Selenium Python 【发布时间】:2022-01-06 16:54:33 【问题描述】:

所以我正在尝试访问一个搜索页面,该页面涉及点击页面底部的可点击链接。我的代码似乎能够找到链接,或者在尝试时至少不会引发错误,但是我收到错误“AttributeError:'WebElement' object has no attribute 'Click'”,即使该元素在页面上是可物理点击的. 这是代码和网站。

driver = webdriver.Edge(r'C:/Users/User/Desktop/Anaconda/edgedriver_win32/msedgedriver')
driver.get("https://www.canada.ca/en/environment-climate-change/services/species-risk-public-registry/cosewic-assessments-status-reports")
#click on the "Search COSEWIC status reports" button
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.LINK_TEXT, "Search COSEWIC status reports"))
)
link = driver.find_element_by_link_text("Search COSEWIC status reports");
link.Click();

如果我对这个元素的可点击有误,请告诉我。为了清楚起见,我试图点击链接“搜索网页底部的 COSEWIC 状态报告”https://www.canada.ca/en/environment-climate-change/services/species-risk-public-注册表/cosewic-assessments-status-reports"

更新

我找到了解决方法,但问题仍然存在。 我遇到了另一个需要单击的属性,它似乎没有属性“id”或任何易于识别的属性。

<span data-v-7ee3c58f="" class="name-primary">COSEWIC Status Appraisal Summary on the Pacific Water Shrew <em>Sorex bendirii</em> in Canada</span>

我尝试将 XPath 复制到此元素和 XPath 中的 id,但它们似乎不起作用。这是页面上的第一个结果。 "https://species-registry.canada.ca/index-en.html#/documents?documentTypeId=18&sortBy=documentTypeSort&sortDirection=asc&pageSize=10&keywords=pacific%20water%20shrew"

【问题讨论】:

您正在使用哪种编程语言。如果是python,则不需要semi-colon,只需单击带有小写字母的click() 【参考方案1】:

你的语言是python,所以你需要使用click()而不是click()

此外,要点击 clickable 元素而不是 presence_of_element_located(),您需要为 element_to_be_clickable() 引入 WebDriverWait,您可以使用以下任一方法Locator Strategies:

driver = webdriver.Edge(r'C:/Users/User/Desktop/Anaconda/edgedriver_win32/msedgedriver')
driver.get("https://www.canada.ca/en/environment-climate-change/services/species-risk-public-registry/cosewic-assessments-status-reports")
#click on the "Search COSEWIC status reports" button
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, "Search COSEWIC status reports"))).click()

【讨论】:

哦,有趣的是,似乎有一些不同的语法需要注意超过 selenium。感谢那。至于选择,我现在要单击的元素就是这个。 &lt;span data-v-7ee3c58f="" class="name-primary"&gt;COSEWIC Status Appraisal Summary on the Pacific Water Shrew &lt;em&gt;Sorex bendirii&lt;/em&gt; in Canada&lt;/span&gt; 我已经尝试通过链接文本和部分链接文本也通过类名,尽管有两个同名,我似乎无法用[0] 索引第一个。虽然我尝试过复制 XPath,但我不懂 XPath 或 CSS。没用 @MaxDuso 很高兴能为您提供帮助。 Vote up questions and answers 您发现这对未来读者的利益很有帮助。见Why is voting important。

以上是关于AttributeError:“WebElement”对象没有属性“单击”错误尝试使用 Selenium Python 单击链接的主要内容,如果未能解决你的问题,请参考以下文章

AttributeError:“字节”对象没有属性“告诉”

AttributeError: 'RDD' 对象没有属性 'show'

AttributeError:“NumpyArrayIterator”对象没有属性“类”

AttributeError:模块 'dbus' 没有属性 'lowlevel'

AttributeError:模块'keras'没有属性'initializers'

AttributeError:“会话”对象没有属性“会话”