Python:通过selenium打开两个不同的选项卡

时间:2016-10-10 17:12:59

标签: python selenium

我尝试通过Selenium在浏览器中打开两个不同的标签。 但是当我在第一个选项卡中完成查询并切换到第二个选项卡时,我的下一个查询再次在第一个选项卡中执如何在不同的选项卡中执行两个查询(不像现在这样在一个选项卡中),我需要更改什么。

    <!-- language: python3 -->
import time,os
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

chromedriver = "/home/andrew/Загрузки/chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)
for elem in range(0,3):

    driver.find_element_by_tag_name("body").send_keys(
    Keys.CONTROL + "t")

    driver.get("http://google.com")

    time.sleep(3)
    # first tab
    search = driver.find_element_by_name('q')
    search.send_keys('andrew sotnikov site:progreso.com.ua')
    search.send_keys(
        Keys.RETURN)  # hit return after you enter search text
    time.sleep(5)  

    time.sleep(3)
    # second tab
    driver.find_element_by_tag_name("body").send_keys(
    Keys.CONTROL + "t")

    driver.get("http://google.com")
    time.sleep(2)
    search = driver.find_element_by_name('q')
    search.send_keys('andrew sotnikov site:progreso.com.ua')
    search.send_keys(
        Keys.RETURN)  # hit return after you enter search text
    time.sleep(5)  


    driver.find_element_by_tag_name('body').send_keys(
        Keys.CONTROL + 'w')

1 个答案:

答案 0 :(得分:0)

对我来说最好的解决方案是使用window_handles,因为 Saurabh Gaur 建议我。 但在切换选项卡之前,我应该声明所有选项卡。就在那之后,我可以像任何可迭代对象一样切换标签。 我的解决方案如下:

for elem in range(0,3):
    driver.find_element_by_tag_name("body").send_keys(
    Keys.CONTROL + "t")

for handle in driver.window_handles:

    driver.get("http://google.com")
    driver.switch_to_window(driver.handle)
    time.sleep(2)
    search = driver.find_element_by_name('q')
    search.send_keys('andrew sotnikov site:progreso.com.ua')
    search.send_keys(
        Keys.RETURN)  # hit return after you enter search text
    time.sleep(5)