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。
答案 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
正确的解决方案可能是构建一个唯一的xpath
或css
,通过 find_elements_*
方法识别正确的元素组,然后保存在列表中迭代它。
答案 1 :(得分:0)
我在屏幕截图中检查了网站。您实际上是在点击div
列表,每个列表都包含一个在新窗口或标签页中打开的链接,具体取决于浏览器。
您需要点击此类site-piclist_pic_link
的链接。