web-dev-qa-db-ja.com

Pythonバインディングを使用してキーコントロールを送信し、Seleniumでクリックします

Seleniumを使用して新しいタブでリンクを開く必要があります。

Seleniumの要素をctrl +クリックして新しいタブで開くことは可能ですか?

21
micgeronimo

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()
34
Louis

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 
9
aberna

キークラスをインポートすることで、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)

0
Satheesh Kumar

以下は、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);

ウィンドウ名を追跡して、タブ間を簡単に移動できます。

0
Rupesh Shinde