XPath在使用Splinter运行测试时未解析为链接



这是Splinter 0.5.4和Python 2.7.5的结果。Firefox 22.0,在运行MacBook Air的Mountain Lion上运行。

以下是我正在尝试做的事情-

1.登录Gmail。

2.单击垃圾箱链接。

3.单击垃圾箱页面中的立即清空垃圾箱链接。

4.在确认对话框中单击"确定"。

使用Firebug/FirePath-这个XPath-`//div/div[3]/div[3]/div/span`或`//div/div[3]/div[3]/div/span[@id]`突出显示立即清空垃圾链接。

但是,当我使用Splinter运行时,XPath不会解析为该链接(,因此在调用链接上的click()方法时会得到AttributeError)。

你知道为什么Splinter无法解析到链接吗?根据我的检查,XPath似乎是可以的。

非常感谢您的帮助。

def emptyTrash():
    browser.click_link_by_href("https://mail.google.com/mail/u/0/?shva=1#trash")
    print browser.is_element_present_by_xpath("//div/div[3]/div[3]/div/span", wait_time=5)
    deleteLink = browser.find_by_xpath("//div/div[3]/div[3]/div/span[@id]")
    print deleteLink #prints an empty list, since the above xpath is not finding the link
    deleteLink.click() #AttributeError
    trashokButton = browser.find_by_name("ok")
    trashokButton.click()

我认为您的xpath不太正确。以下是适用于我的:

from splinter import Browser
import time
URL = 'https://mail.google.com/mail/u/0/?shva=1#trash'
with Browser() as browser:
    browser.visit(URL)
    username = browser.find_by_id('Email')
    username.fill(...)
    password = browser.find_by_id('Passwd')
    password.fill(...)
    button = browser.find_by_id('signIn')
    button.click()
    time.sleep(5)
    browser.visit(URL)
    empty_button = browser.find_by_xpath("//div[5]/div[2]/div/div[2]/div[1]/div[2]/div/div/div/div[2]/div[1]/div[1]/div/div[2]/div[3]/div/span")
    empty_button.click()

尽管您应该考虑简化xpath表达式,但是具有绝对路径的xpath太脆弱了。

希望能有所帮助。

相关内容

  • 没有找到相关文章

最新更新