python3 selenium find_elements_by_class_name无法单击每个项目

时间:2017-10-31 09:54:56

标签: python python-3.x selenium

itemList = driver.find_elements_by_class_name('site-piclist_info')
print(len(itemList))
for item in itemList:
    item.click()
handles = webdriver.window_handles
print(handles)

第1行工作,第2行处理并获得结果 但是line4无法处理 handl列表总是只包含一个句柄;请参阅image

2 个答案:

答案 0 :(得分:2)

让我们看看您的代码中发生了什么:

itemList = driver.find_elements_by_class_name('site-piclist_info')
print(len(itemList))

有了这个,我们得到了class='site-piclist_info'

的所有节点的列表

下一步:

for item in itemList:
    item.click()

这里我们试图点击列表中迭代中的每个节点,而不管它们是否是实际链接。但是正如您提到line4 cannot be processed那是因为class='site-piclist_info'的第一个节点可能不是Link<a>标签内的,这就是为什么调用click()方法没有'工作。

最后,list of handls always contain only one handle是由 webdriver

打开的主窗口的句柄

正确的解决方案可能是构建一个唯一的xpathcss,通过 find_elements_* 方法识别正确的元素组,然后保存在列表中迭代它。

答案 1 :(得分:0)

我在屏幕截图中检查了网站。您实际上是在点击div列表,每个列表都包含一个在新窗口或标签页中打开的链接,具体取决于浏览器。

您需要点击此类site-piclist_pic_link的链接。