gpt4 book ai didi

python - 使用 Python Selenium 检查元素是否存在

转载 作者:IT老高 更新时间:2023-10-28 20:28:48 24 4
gpt4 key购买 nike

我有一个问题 - 我正在使用 selenium (firefox) Web 驱动程序打开网页,单击几个链接等,然后捕获屏幕截图。

我的脚本在 CLI 中运行良好,但是当通过 cronjob 运行时,它没有通过第一个 find_element() 测试。我需要添加一些调试,或者一些东西来帮助我找出失败的原因。

基本上,在进入登录页面之前,我必须单击“登录” anchor 。元素的构造是:

<a class="lnk" rel="nofollow" href="/login.jsp?destination=/secure/Dash.jspa">log in</a>

我正在使用 find_element By LINK_TEXT 方法:

login = driver.find_element(By.LINK_TEXT, "log in").click()

我是一个 Python 菜鸟,所以我正在与这门语言进行一些斗争......

A) 我如何检查链接是否真的被 python 拾取?我应该使用 try/catch block 吗?

B) 有没有比 LINK_TEXT 更好/更可靠的方式来定位 DOM 元素?例如。在 JQuery 中,可以使用更具体的选择器 $('a.lnk:contains(log in)').do_something();


我已经解决了主要问题,只是手指问题 - 我用不正确的参数调用脚本 - 简单的错误。

我仍然想要一些关于如何检查元素是否存在的指示。此外,隐式/显式等待的示例/解释,而不是使用糟糕的 time.sleep() 调用。

干杯,ns

最佳答案

一)

from selenium.common.exceptions import NoSuchElementException        
def check_exists_by_xpath(xpath):
try:
webdriver.find_element_by_xpath(xpath)
except NoSuchElementException:
return False
return True

b) 使用 xpath - 最可靠的。 此外,您可以将 xpath 作为所有脚本的标准,并创建上述提到的通用函数。

更新:我在 4 年前写了最初的答案,当时我认为 xpath 是最好的选择。现在我推荐使用 css 选择器。我仍然建议不要混合/使用“by id”、“by name”等,而是使用一种方法。

关于python - 使用 Python Selenium 检查元素是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9567069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com