web-dev-qa-db-ja.com

Python-Seleniumを使用して複数のタブを開く

私はPythonを使用しています。 Chromeで2つのタブを開き、それぞれが異なるWebサイトに移動しようとしています。これは私のコードです:

_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に対して開かれ、次に別のタブがデフォルトのWebページに対して開かれ、次にbing.comが元のタブで開かれます。最初のタブをRedditに移動し、2番目のタブをbingに移動したいのですが、browser.get('website')は最初のタブにのみ作用します。

6
Shock-o-lot

pythonの場合は次のようにしてください。

browser=webdriver.Chrome()
browser.get('http:/reddit.com')
window_before = driver.window_handles[0]
browser.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't')
window_after = driver.window_handles[1]
driver.switch_to_window(window_after)
time.sleep(3)
browser.get('http://bing.com')
7
Jason

ウィンドウを操作するには、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')
21
Florent B.

他のタブに切り替えて操作する必要があります。

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