27

Selenium 2 と Python バインディングを使用してコピー アンド ペーストを実行する方法はありますか?

コピーしたい要素を強調表示してから、次のアクションを実行します

copyActionChain.key_down(Keys.COMMAND).send_keys('C').key_up(Keys.COMMAND)

ただし、強調表示されたテキストはコピーされません。

4

9 に答える 9

25

実際にはかなり単純です:

from selenium.webdriver.common.keys import Keys

elem = find_element_by_name("our_element")
elem.send_keys("bar")
elem.send_keys(Keys.CONTROL, 'a') # highlight all in box
elem.send_keys(Keys.CONTROL, 'c') # copy
elem.send_keys(Keys.CONTROL, 'v') # paste

これはおそらく他のコマンドにも拡張できると思います。

于 2012-08-01T08:53:43.590 に答える
7

実際のキーボード ショートカットを使用するのではなく、webdriver にテキストを取得させます。これを行うには、要素の内部テキストを見つけます。

WebElement element1 = wd.findElement(By.locatorType(locator));
String text = element1.getText();

このようにして、テスト プロジェクトは実際にテキストにアクセスできます。これは、ログを記録する場合や、テキストが伝えたいことを確実に伝える場合に役立ちます。

ここから要素のテキストを 1 つの文字列として操作できるため、貼り付け先の要素に何を入力するかを完全に制御できます。今ちょうど

 element2.clear();
 element2.sendKeys(text);

ここで、element2 はテキストを貼り付ける要素です

于 2013-07-08T23:49:12.160 に答える
7
elem.send_keys(Keys.SHIFT, Keys.INSERT)

何かを貼り付けようとすると、macOS Catalina で正常に動作します。

于 2019-11-09T09:13:54.260 に答える
5

現時点では OSX でこれを試すことはできませんが、FF と Ubuntu では確実に動作します。

import os
import time

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

with open('test.html', 'w') as fp:
    fp.write("""\
<html>
<body>
  <form>
    <input type="text" name="intext" value="ABC">
    <br>
    <input type="text" name="outtext">
  </form>
</body>
</html>
""")

driver = webdriver.Firefox()
driver.get('file:///{}/test.html'.format(os.getcwd()))
element1 = driver.find_element_by_name('intext')
element2 = driver.find_element_by_name('outtext')
time.sleep(1)
element1.send_keys(Keys.CONTROL, 'a')
time.sleep(1)
element1.send_keys(Keys.CONTROL, 'c')
time.sleep(1)
element2.send_keys(Keys.CONTROL, 'v')

ステートメントは、ステップを確認できるようにするためのsleep()ものであり、もちろん、プログラムが機能するために必要なものではありません。

ActionChainsend_keyは、選択した要素に切り替えて、send_keysそれに対して a を実行します。

于 2013-04-16T12:24:07.927 に答える