无法打开在硒的webdriver一个NEWTAB在Mac OS X

问题描述:

我应该能够使用的代码无法打开在硒的webdriver一个NEWTAB在Mac OS X

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

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

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

硒打开一个新的选项卡蟒蛇却没有新的标签页中打开,并出现任何错误消息(http://*.com/确实加载)。

请注意,我用的Keys.COMMAND + 't'因为我运行在OS X上

的代码,我不知道是什么原因造成的问题,因为这样one的帖子,指出我的代码应该工作。

更新以包括答案

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

driver = webdriver.Firefox() 
driver.get("http://*.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') 
+1

尝试'driver.execute_script( '的window.open();')',而不是 – Andersson

+0

@Andersson这工作....我不知道为什么。你知道如何切换到新的打开标签。如果我能弄清楚,我会考虑回答这个问题。 – AzJ

下面的代码试图打开新的标签页,并切换到它:

driver = webdriver.Firefox() 
driver.get("http://*.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 y OU要在新标签作为参数就像打开window.open()

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

非常有帮助。还有一个问题,如果你看看我发布的更新,而不是切换到最新的选项卡,脚本会回到第一个。我不确定它为什么这样做。 – AzJ

+0

当您搜索电子邮件输入字段时,您不需要再次切换并打开Github。检查更新 – Andersson

+0

我认为你误解了我的问题。我试图在两个不同的选项卡上打开同一个网站两次,并将文本添加到两个不同的字段。 – AzJ