繁体   English   中英

单击 Selenium 中的链接:find_element_by_link_text 不起作用

[英]Click on a link in Selenium: find_element_by_link_text doesn't work

我将通过 selenium 单击一个链接,但是当我按以下方式应用 find_element_by_link_text 时它不起作用:(URL: https://healthunlocked.com/positivewellbeing

HTML 代码

<a class href="/positivewellbeing/posts">Posts</a>

Selenium 代码:

driver.find_element_by_link_text('Posts').click()

我没有任何错误,但此代码行没有运行或工作

尝试在点击之前添加.element_to_be_clickable

wait = WebDriverWait(driver, 20)
wait.until(EC.element_to_be_clickable((By.LINK_TEXT, 'Posts'))).click()

#update here
wait.until(EC.url_to_be('https://healthunlocked.com/positivewellbeing/posts'))
print(driver.current_url)

以下进口:

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

根据您的评论,如果您想等待 url 更改为您想要的方式,请使用EC.url_to_be 因为time.sleep (...)是一个不好的方法,请看上面更新的代码。

在此处查看有关expected_conditions的更多信息:

https://selenium-python.readthedocs.io/api.html#expected-conditions-support

如果您使用的是.Net,您可以尝试在您的项目中使用 Coypu 库:

https://github.com/featurist/coypu https://www.nuget.org/packages/Coypu/

Coypu 它是一个包装器,可以让你免于重试、休眠(等待)。

它支持 .Net 中的浏览器自动化,以帮助使测试具有可读性、健壮性、编写速度快且与 UI 的联系更少。 如果您的测试充满了睡眠、重试、复杂的 XPath 表达式和 ID,那么 Coypu 可能会有所帮助。

Coypu 在 Nuget 上:

PM> Install-Package Coypu

我在一个项目中工作,我们使用 C# 和 Selenium 开发了大约 3k 个自动化测试,如果没有 Coypu,我的生活会有点悲惨。

使用 Coypu 时,您的代码看起来相同,但睡眠将由库自动处理,它对用户是透明的:

Browser.FindXPath("//*[contains(text(), 'Posts')]").Click();

Browser.FindIdEndingWith("Posts").Click();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM