Python Selenium查找并单击多个元素

时间:2017-09-05 10:17:24

标签: python selenium

我看到了类似的问题,但没有发现它们对这个基本案例有帮助。如果答案已经存在,请告诉我。

这有效:

driver = webdriver.Firefox()
driver.get(start_url)
time.sleep(3)
target = driver.find_element_by_xpath('//span[contains(string(), "my search text")]')
target.click()

这不是:

driver = webdriver.Firefox()
driver.get(start_url)
time.sleep(3)
targets = driver.find_elements_by_xpath('//span[contains(string(), "my search text")]')
for target in targets:
    target.click()

我收到错误消息

AttributeError: 'dict' object has no attribute 'click'

我理解错误消息,但无法解决。 targets看起来像这样

[{'element-6066-11e4-a52e-4f735466cecf': 'f23eba0d-cc6d-3a43-9fce-f2ad47bd549d'}, 
 {'element-6066-11e4-a52e-4f735466cecf': '34afe1f2-1355-6f4a-80fe-1003287e9b68'},
 {'element-6066-11e4-a52e-4f735466cecf': '10daa515-75ad-1749-a3c9-fe82fd8c4464'},
 {'element-6066-11e4-a52e-4f735466cecf': '14f92352-7ab9-e346-b8cb-2a1b3a5a622f'},
 {'element-6066-11e4-a52e-4f735466cecf': '473a12b1-7739-9f40-9089-0a85c0c80dbf'},
 {'element-6066-11e4-a52e-4f735466cecf': '990aceb7-4090-ef4b-8ed9-58a7dea66388'},
 {'element-6066-11e4-a52e-4f735466cecf': '7b21585a-0bdd-cc47-b2ae-dd100ba4f6da'},
 {'element-6066-11e4-a52e-4f735466cecf': '6ecda3e0-82d9-1c44-b848-f32adaea5df6'},
 {'element-6066-11e4-a52e-4f735466cecf': 'd8394f7b-3c3d-b242-9b44-465de8db15c5'},
 {'element-6066-11e4-a52e-4f735466cecf': 'e496bb96-f0a4-b647-8a04-a7f364eebb53'}]

相比之下,这就是target在第一个例子中的样子:

<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="ba59bda2-535e-514e-86af-4e1808b5dea4", element="93458948-946c-684e-8f90-410bf67f4be5")>

1 个答案:

答案 0 :(得分:0)

试着在你的列表中找出凌乱的值,字典

我遇到了同样的问题,因为我想取消关注我的 LinkedIn 帐户上的所有兴趣。

当我尝试公司 [0] 时,它返回 0,但对于其他公司,它正在返回

所以我猜问题出在我的列表的那个值上,在我将列表切片如下后可能会导致错误

公司 1 = 公司[1:839]

对于公司 1 中的公司: company.click()

它不见了,尝试通过循环查找列表中的杂乱值。