这是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 /跨度[@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()
答案 0 :(得分:2)
我认为你的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太脆弱了。
希望有所帮助。