【问题标题】:How to open new tab in python using selenium and PhantomJS如何使用 selenium 和 PhantomJS 在 python 中打开新选项卡
【发布时间】:2025-11-21 11:10:01
【问题描述】:

在 Python 3.4 中设置自动浏览器测试并使用无头浏览器 - phantomjs。

打开新标签的常用方法 (Keys.CONTROL + 't') 不适用于 phantomjs。我假设我可以使用 selenium 中的一种方法,或者 phantomjs 的特定组合键来打开标签,但是我找不到它。我可以使用 chrome 或 firefox,但我只想要 PhantomJS。

我需要一个新标签,因为我将打开两个标签并通过以下方式在窗口之间切换:

句柄 = driver.window_handles driver.switch_to.window(handles[0])

phantomjs 的问题在于它不会创建新标签,因此只有一个句柄。

有人知道吗?

【问题讨论】:

  • 您是否有机会在 Mac 上运行?如果是这样,请尝试用 COMMAND 替换 CONTROL,除此之外它应该可以工作。

标签: python selenium tabs phantomjs


【解决方案1】:

哇,这个问题的答案太晚了......但要记住的一件事是 PhantomJS 是一个无头浏览器。没有“标签”,例如您在 Firefox、Chrome 等中看到的内容。您要做的是打开一个新窗口,而这只能通过 execute_script 真正完成。例如,如果您运行以下命令,您将很好地了解窗口在 Selenium 中的工作方式:

driver = webdriver.PhantomJS()
driver.get("https://linkedin.com")
driver.execute_script("$(window.open('https://twitter.com'))")
print driver.current_window_handle

# Switch to new window
driver.switch_to_window(driver.window_handles[-1])
print " Twitter window should go to facebook "
print "New window ", driver.title
driver.get("http://facebook.com")
print "New window ", driver.title

# Switch to old window
driver.switch_to_window(driver.window_handles[0])
print " Linkedin should go to gmail "
print "Old window ", driver.title
driver.get("http://gmail.com")
print "Old window ", driver.title

# Again new window
driver.switch_to_window(driver.window_handles[1])
print " Facebook window should go to Google "
print "New window ", driver.title
driver.get("http://google.com")
print "New window ", driver.title

【讨论】:

  • 通过"errorMessage":"Can't find variable: $" 尝试您的代码时出现此错误,这是由这一行引起的,driver.execute_script("$(window.open('https://twitter.com'))")
最近更新 更多