使用selenium webdri切换回父选项卡

2024-04-27 02:33:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了示例代码,但它不起作用。还注意到只有一个窗口句柄用于两个选项卡。如何再次切换到父选项卡?

 driver = webdriver.Firefox()
 driver.set_page_load_timeout(60)
 driver.implicitly_wait(15)
 driver.get("https://www.google.co.in")
 oldtab = driver.current_window_handle
 print oldtab
 print driver.title
 body = driver.find_element_by_tag_name("body")
 print 'new tab opened'
 driver.get("http://gmail.com/")
 print driver.title
 print 'back to old tab'
 driver.switch_to_window(oldtab)
 print driver.title
 for handle in driver.window_handles:
    print "Handle = ",handle

Tags: to代码in示例gettitledriverbody
3条回答

在将handle切换到父选项卡之前,需要使用Keys切换选项卡。

 from selenium.webdriver.common.keys import Keys

 driver = webdriver.Firefox()
 driver.set_page_load_timeout(60)
 driver.implicitly_wait(15)

 # First Tab
 driver.get("https://www.google.co.in")
 oldtab = driver.current_window_handle
 print driver.title
 time.sleep(3)

 # Second Tab
 driver.find_element_by_tag_name("body").send_keys(Keys.CONTROL + "t")
 driver.get("http://gmail.com/")
 newtab = driver.current_window_handle
 print driver.title
 time.sleep(3)

 # Go back to First Tab
 driver.find_element_by_tag_name("body").send_keys(Keys.ALT + Keys.NUMPAD1)
 driver.switch_to_window(oldtab)
 print driver.title
 time.sleep(3)

 # Go to Second Tab again
 driver.find_element_by_tag_name("body").send_keys(Keys.ALT + Keys.NUMPAD2)
 driver.switch_to_window(newtab)
 print driver.title
 time.sleep(3)

下面的解决方案对我有效。

ActionChains(driver).key_down(Keys.CONTROL).send_keys('t').key_up(Keys.CONTROL).perform()
time.sleep(5)    
ActionChains(driver).key_down(Keys.CONTROL).send_keys(Keys.NUMPAD1).key_up(Keys.CONTROL).perform()

另一种实现方法是-打开浏览器的两个实例,即driver1driver2,然后在浏览器实例中打开相应的url并对其执行操作-

driver1 = webdriver.Firefox()
driver1.get("https://www.google.co.in")
//perform actions for page https://www.google.co.in


driver2 = webdriver.Firefox()
driver2.get("http://gmail.com/")
//perform actions for page http://gmail.com/

相关问题 更多 >