当前位置: 首页 > 知识库问答 >
问题:

打开新窗口时selenium window_handles不正确

冷夜洛
2023-03-14

这个问题被简化为下面的代码:

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

# create a new Firefox session


driver_temp = webdriver.Firefox()
driver_temp.implicitly_wait(30)
driver_temp.get("https://www.google.com")
body = driver_temp.find_element_by_tag_name('body')

# manually open second tab
body.send_keys(Keys.CONTROL + 't')
driver_temp.get("https://www.google.com")
body = driver_temp.find_element_by_tag_name('body')

# manually open third tab
body.send_keys(Keys.CONTROL + 't')
driver_temp.get("https://www.google.com")
body = driver_temp.find_element_by_tag_name('body')

#print the number of window_handles
print len(driver_temp.window_handles)

我已经打开了3个选项卡,但是len(driver_temp.window_handles)总是1

共有1个答案

岑经纶
2023-03-14

Selenium不提供操作浏览器选项卡的API。您可能已经注意到,应用Ctrl/Command+T“hack”打开一个新选项卡。

查看更多信息,请参见:

  • 在Selenium中控制firefox选项卡
  • 通过selenium web driver命令在浏览器的同一窗口会话中打开新选项卡?
 类似资料:
  • 查看这段代码,它们展示了一种在登录后显示新窗口的方法。当用户名和密码是正确的,它打开新的对话框。我想要一个按钮点击打开新的对话框,而不检查用户名和密码。

  • 用于打开url或载入url至 BrowserWindow ,并对该窗口进行少量功能的控制. 使用 window.open 创建一个新窗口时,会自动创建一个 BrowserWindowProxy 的实例将返回一个标识,可通过标识对这个新窗口进行少量功能的控制. 不过希望完全的控制这个窗口,请直接创建一个 BrowserWindow .新创建的 BrowserWindow 默认为继承父窗口的属性参数,

  • 我试图创建一个程序,它有一个tkinter窗口打开,然后当你按下一个按钮,它关闭tkinter窗口,打开一个pyplay窗口。然而,当我点击按钮打开pyplay窗口时,它会打开pyplay窗口,而tkinter窗口保持打开状态。 代码: 我还尝试使用: 我怎样才能解决这个问题?(我正在MacOS 11.1上运行Python 3.7.7)

  • 我有A. fxml和B. fxml。运行Java应用程序覆盖启动方法。我想每40分钟循环(5次){打开新阶段B. fxml并等待stage.close,如果阶段关闭继续循环打开新阶段B fxml。循环五次。我尝试定时器timerment我不能。我尝试JavaFX服务我不能。我创建My线程扩展线程对象。这一次,我无法控制下一阶段的循环。当用于声明开始打开5阶段。但是我想循环等待当前阶段关闭,然后进入

  • 新窗口打开链接 该方法可以新起webview打开页面,由于客户端窗口过多会占用较多内存,请谨慎使用 Tida.pushWindow("http://www.tmall.com/go/chn/common/u-award.php?disableptf=1"); 关闭窗口 关闭当前webview窗口 Tida.popWindow();

  • 在Chrome中打开新窗口时,有没有办法自动打开开发者工具?