python - selenium新建了5个标签页但是通过window_handles只能获取一个句柄是怎么回事?
PHPz
PHPz 2017-04-17 17:43:59
0
1
644

大家好,我刚开始学习使用selenium写一个操作浏览器的小脚本。
我想在一个火狐浏览器窗口下新开n个标签页,我在网上查到可以使用键盘事件:Keys.CONTROL + 't'实现,确实能够生效。
但问题是,接下来我需要操作这些新打开的标签页,网上的方法是通过driver.window_handles获取句柄。按道理说六个tab应该获取6个句柄,但是我输出发现始终只有一个句柄,我的代码如下:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox() # 默认的火狐浏览器

for i in range(5):
    # 这句代码相当于在浏览器窗口下按下ctrl+t打开一个新的标签页
    driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't')
    
handles = driver.window_handles
print(len(handles))
print(handles)

输出:
1
['{1deb296c-6cdc-4838-b143-1ee67ae0effd}']

只有一个句柄,因此我无法操作全部的tabs

谁能指点我一下其中的原因?或者提供一种可以新建n个标签页并且能够不断切换和操作它们的方法,谢谢大家!

PHPz
PHPz

学习是最好的投资!

모든 응답(1)
洪涛

저도 최근에 Selenium을 사용했는데 새 창을 열었을 때 window_handles를 사용하여 모든 핸들을 가져올 수 없는 경우 이 문제가 발생했습니다.
이틀 동안 고민을 하다가 많은 정보를 얻었습니다. . . 스크립트를 다시 실행했을 때 새 창이 완전히 열리지 않았음을 발견했습니다(설명하는 방법을 모르기 때문에 정확하지 않음).
수면 시간을 추가하거나 다른 방법을 사용하여 판단할 수 있습니다. . 새창이 완전히 열렸는지가 잠자기보다 더 정확합니다

으아악
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿