Seleniumを使用して新しいタブでリンクを開く必要があります。
Seleniumの要素をctrl +クリックして新しいタブで開くことは可能ですか?
ActionChain
とともにkey_down
を使用してコントロールキーを押し、key_up
を使用してリリースします。
import time
from Selenium import webdriver
from Selenium.webdriver.common.action_chains import ActionChains
from Selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get('http://google.com')
element = driver.find_element_by_link_text('About')
ActionChains(driver) \
.key_down(Keys.CONTROL) \
.click(element) \
.key_up(Keys.CONTROL) \
.perform()
time.sleep(10) # Pause to allow you to inspect the browser.
driver.quit()
2つの可能な解決策:
新しいタブを開く
self.driver = webdriver.Firefox()
self.driver.find_element_by_tag_name('body').send_keys(Keys.COMMAND + 't')
これがMAC OSXのソリューションです。それ以外の場合は、標準のKeys.CONTROL + 't'を使用できます
新しいWebdriverを開く
driver = webdriver.Firefox() #1st window
second_driver = webdriver.Firefox() #2nd windows
キークラスをインポートすることで、CONTROLまたはSHIFTで新しいタブまたは新しいウィンドウでページを開き、これらのキーを入力できます:driver.find_element_by_xpath('//input[@name="login"]').send_keys(Keys.CONTROL,Keys.ENTER)
または
driver.find_element_by_xpath('//input[@name="login"]').send_keys(Keys.SHIFT,Keys.ENTER)
以下は、Selenium WebDriverでJavaバインディングとその動作を試したものです。新しいタブでリンクを手動で開きたい場合は、リンクのコンテキストクリックを実行してこれを実現できます。 「新しいタブで開く」オプションを選択します。Javaバインディングを使用したSelenium Webドライバーの実装です。
Actions newTab= new Actions(driver);
WebElement link = driver.findElement(By.xpath("//xpath of the element"));
//Open the link in new window
newTab.contextClick(link).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform();
Webドライバは、新しいウィンドウと同じ方法で新しいタブを処理します。ウィンドウ名で新しい開いているタブに切り替える必要があります。
driver.switchTo().window(windowName);
ウィンドウ名を追跡して、タブ間を簡単に移動できます。