无法在Mac OS X上的selenium webdriver中打开新选项卡

时间:2017-06-05 17:04:37

标签: python macos selenium firefox selenium-webdriver

我应该可以使用代码

在selenium中为python打开一个新选项卡
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://stackoverflow.com/")

body = driver.find_element_by_tag_name("body")
body.send_keys(Keys.COMMAND + 't')

但是没有打开新标签页,也没有显示错误消息(http://stackoverflow.com/确实加载)。

请注意,我正在使用Keys.COMMAND + 't'因为我在OS X上运行代码。

我不知道导致此问题的原因是one这样的帖子,表明我的代码应该有效。

已更新以包含答案

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

driver = webdriver.Firefox()
driver.get("http://stackoverflow.com/")

current_tab = driver.current_window_handle
driver.execute_script('window.open();')
new_tab = [tab for tab in driver.window_handles if tab != current_tab][0]
driver.switch_to.window(new_tab)
driver.get("http://github.com")
inputElement = driver.find_element_by_id("user[login]")
inputElement.send_keys('1')

current_tab = driver.current_window_handle
driver.execute_script('window.open();')
new_tab = [tab for tab in driver.window_handles if tab != current_tab][0]
driver.switch_to.window(new_tab)
driver.get("http://github.com")
inputElement = driver.find_element_by_id("user[email]")
inputElement.send_keys('2')

2 个答案:

答案 0 :(得分:1)

尝试使用以下代码打开新标签并切换到该标签:

driver = webdriver.Firefox()
driver.get("http://stackoverflow.com/")

current_tab = driver.current_window_handle
driver.execute_script('window.open("http://github.com");')
new_tab = [tab for tab in driver.window_handles if tab != current_tab][0]
driver.switch_to.window(new_tab)
inputElement = driver.find_element_by_id("user[login]")
inputElement.send_keys('1')

driver.execute_script('window.open("http://github.com");')
third_tab = [tab for tab in driver.window_handles if tab not in (current_tab, new_tab)][0]
driver.switch_to.window(third_tab)
inputElement = driver.find_element_by_id("user[email]")
inputElement.send_keys('2')

您可以使用driver.close()关闭新标签,driver.switch_to.window(current_tab)切换回初始标签

另请注意,您可以将要在新标签页中打开的页面URL作为window.open()的参数传递,如:

driver.execute_script('window.open("https://google.com");')

答案 1 :(得分:0)

尝试以下代码在MAC中打开新标签:-

chrome_print(input = "https://www.polkpa.org/LegalDesc.aspx?strap=272735000000032000", wait = 30, format = "png", timeout = 60, output = paste("272735000000032000","_LegalDesc.png", sep = ""))