2013-01-07 64 views
1

我已经创建了一个匹配xpath的元素列表,并希望逐一点击每个元素。但是,如果我使用get_attribute("href")命令,我得到一个'unicode'对象没有属性'点击'错误。这是因为href是一个字符串。如果我不使用get_attribute并简单地使用这个命令:需要点击一个xpath使用python的硒webdriver

driver.find_elements_by_xpath(".//div/div/div[3]/table//tr[12]/td/table//tr/td/a") 

我得到一个列表元素。我可以成功点击列表中的第一个链接;然而,当我点击第二秒我得到这个错误:'元素不是 在缓存中找到 - 也许页面已经改变,因为它被查找' 我想象的原因,页面链接我想迭代通过经由搜索查询转换为Java产生(这是在href链接之一:

javascript:__doPostBack('ctl00$Content$listJobsByAll1$GridView2','Page$3')) 

的相关信息的一个多个片:只有两个属性在该XPath位置:href和文本

所以,鉴于我正在处理一个Java网站,只有两个属性,我希望有人可以告诉我哪些webdriver命令我可以用来获得一系列可点击的静态链接。除了具体的答案之外,关于我如何能够自己想出来的任何建议都会有所帮助。

回答

2

如果您点击与selenium的链接,您正在更改当前页面。您指向的页面没有下一个元素。

获得链接使用:

'.//tag/@href' 

你可以试试:

for elem in elems: 
    elem.click() 
    print browser.current_url 
    browser.back() 
+0

感谢。我不知道为什么我没有尝试过 - 没有理由不起作用。当我回家时我会跑步。 – user1780952

+0

所以当我回去时,元素仍然不同,因此我不得不1)对元素进行计数,然后2)遍历元素列表的范围,并且每次都实例化列表,因为单击第i个元素。 (“.// div/div/div [3]/table // tr [12]/td/table // tr/td/a”)中的i的 – user1780952

+0

: \t list.append(i) 计数= LEN(列表)-1 打印计数 为i的范围(计数): \t打印我 \t目标= driver.find_elements_by_xpath(” .// DIV/DIV/DIV [3] /表//TR [12]/TD /表// TR/TD/A“) \t打印目标 \t目标[I]。点击() \t time.sleep(5) \t driver.back() \t时间.S leep(5) – user1780952