python教程—检查Python Selenium中是否存在元素-Python实用宝典

python教程—检查Python Selenium中是否存在元素

我有一个问题——我正在使用selenium (firefox) web驱动程序打开一个网页,点击几个链接,然后捕捉一个截图。

我有一个问题——我正在使用selenium (firefox) web驱动程序打开一个网页,点击几个链接,然后捕捉一个截图。

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

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

    <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:包含(登录)”).do_something ();


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

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

欢呼,ns

回答

)是的。检查元素是否存在的最简单方法是在try/catch中调用find_element。

B)是的,我总是试图在不使用文本的情况下识别元素,原因有二:

  1. 文本更有可能改变和;
  2. 如果它对您很重要,那么您将无法针对本地化的构建运行测试。

解决方案:

  1. 您可以使用xpath查找具有ID或其他惟一标识符的父元素或祖先元素,然后查找匹配或;
  2. 您可以为链接本身请求一个ID或名称或其他一些惟一标识符。

对于后续问题,使用try/catch是判断元素是否存在的方法,可以在这里找到很好的等待示例: http://硒iumhq.org/docs/04_webdriver_advance.html

​Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

本文由 Python实用宝典 作者:Python实用宝典 发表,其版权均为 Python实用宝典 所有,文章内容系作者个人观点,不代表 Python实用宝典 对观点赞同或支持。如需转载,请注明文章来源。
0

发表评论