【发布时间】:2012-03-22 22:47:40
【问题描述】:
我有一个问题 - 我正在使用 selenium (firefox) 网络驱动程序打开网页,单击几个链接等,然后捕获屏幕截图。
我的脚本在 CLI 中运行良好,但是当通过 cronjob 运行时,它没有通过第一个 find_element() 测试。我需要添加一些调试,或者一些东西来帮助我找出失败的原因。
基本上,在进入登录页面之前,我必须单击“登录”锚点。元素的构造是:
<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 块吗?
B) 有没有比 LINK_TEXT 更好/更可靠的方式来定位 DOM 元素?例如。在 JQuery 中,可以使用更具体的选择器 $('a.lnk:contains(log in)').do_something();
我已经解决了主要问题,只是手指问题 - 我用不正确的参数调用脚本 - 简单的错误。
我仍然想要一些关于如何检查元素是否存在的指示。此外,隐式/显式等待的示例/解释,而不是使用糟糕的 time.sleep() 调用。
干杯,ns
【问题讨论】:
-
您还可以通过 CSS 定位器或 xpath 查找元素。往往不如文本内容那么脆弱。
-
我相信这两者 - 使用内容文本和 XPATH/CSS - 对于设计而不是应用程序逻辑的微小变化都是脆弱的。更好的方法是通过
id、class_name或name查找元素。
标签: python html selenium webdriver