Python - 使用Selenium打开多个选项卡

时间:2016-09-01 22:28:16

标签: google-chrome selenium tabs

我正在使用Python。我试图在chrome上打开两个标签,每个标签都放在不同的网站上。这是我的代码:

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


browser=webdriver.Chrome()
browser.get('http:/reddit.com')
browser.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't')
time.sleep(3)
browser.get('http://bing.com')

当我运行它时,第一个选项卡打开到reddit.com,然后另一个选项卡打开到我的默认网页,然后在原始选项卡中打开bing.com。我希望第一个标签转到Reddit,第二个标签转到bing,但browser.get('website')仅作用于第一个标签。

3 个答案:

答案 0 :(得分:14)

要与窗口进行交互,您需要使用driver.switch_to.window将上下文设置为该窗口。使用脚本注入打开新选项卡也会更容易:

browser=webdriver.Chrome()

#first tab
browser.get('http:/reddit.com')

#second tab
browser.execute_script("window.open('about:blank', 'tab2');")
browser.switch_to.window("tab2")
browser.get('http://bing.com')

答案 1 :(得分:6)

尝试使用python:

public static void drawTriangle(int size) {
    int maxRow = size + 1;
    for (int i = 1; i <= maxRow; i+=2) {
        System.out.println(StringUtils.repeat(" ", maxRow-i) + StringUtils.repeat("#", i));
    }
}

答案 2 :(得分:0)

您应该切换到其他标签以与之互动。

ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(tabs.get(0));//first tab
driver.switchTo().window(tabs.get(1));//second tab