我有这样的代码和评论:
import selenium.webdriver as webdriver
import selenium.webdriver.support.ui as ui
from selenium.webdriver.common.keys import Keys
browser = webdriver.Chrome()
browser.get("https://www.google.com?q=python#q=python")
first_result = ui.WebDriverWait(browser, 15).until(lambda browser:
browser.find_element_by_class_name("rc"))
first_link = first_result.find_element_by_tag_name("a")
# Save the window opener (current window, do not mistake with tab...
not the same).
main_window = browser.current_window_handle
# Open the link in a new tab by sending keystrokes on the element.
first_link.send_keys(Keys.COMMAND + "t")
# Switch tab to the new tab, which we will assume is the next one on
the right and put focus.
browser.find_element_by_tag_name("body").send_keys(Keys.COMMAND +
Keys.NUMPAD2)
# Close current tab.
browser.find_element_by_tag_name("body").send_keys(Keys.COMMAND + "w")
# Put the focus on the current window which will be the window opener.
browser.switch_to.window(main_window)
但它不起作用(脚本挂起) - first_link未在新选项卡中打开。 关于它的任何其他想法?感谢。
PS:我在macOS上。
答案 0 :(得分:4)
您可以使用此代码:
driver.execute_script("window.open('http://google.com', 'new_window')")
切换:
driver.switch_to_window(driver.window_handles[0])
请参阅此Answer。
答案 1 :(得分:1)
以下代码现在正在运行:
from selenium import webdriver
from selenium.webdriver.support import ui
import time
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
browser = webdriver.Chrome()
browser.get("https://www.google.com?q=python#q=python")
first_result = ui.WebDriverWait(browser, 15).until(lambda browser:
browser.find_element_by_class_name("rc"))
first_link = first_result.find_element_by_tag_name("a")
# Save the window opener (current window, do not mistake with tab... not the same).
main_window = browser.current_window_handle
# Open the link in a new tab by sending keystrokes on the element.
ActionChains(browser) \
.key_down(Keys.COMMAND) \
.click(first_link) \
.key_up(Keys.COMMAND) \
.perform()
browser.switch_to.window(browser.window_handles[1])
time.sleep(5)
# Close current tab.
browser.close()
time.sleep(5)
# Put the focus on the current window which will be the window opener.
browser.switch_to.window(main_window)
# Close the instance of the browser.
browser.quit()
感谢您的帮助!