aar*_*oon 18 selenium selenium-webdriver
有没有办法使用Selenium 2和Python绑定执行复制和粘贴?
我突出显示了要复制的元素,然后执行以下操作
copyActionChain.key_down(Keys.COMMAND).send_keys('C').key_up(Keys.COMMAND)
Run Code Online (Sandbox Code Playgroud)
但是,不会复制突出显示的文本.
Gre*_*reg 19
实际上很简单:
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
Run Code Online (Sandbox Code Playgroud)
我想这可能也可以扩展到其他命令
Bra*_*rks 18
要在Mac和PC上执行此操作,您可以使用这些备用键盘快捷键进行剪切,复制和粘贴.请注意,其中一些在物理Mac键盘上不可用,但由于传统的键盘快捷键而起作用.
所以在Selenium(Ruby)中,选择元素中的文本然后将其复制到剪贴板大致类似于此.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
browser = webdriver.Safari(executable_path = '/usr/bin/safaridriver')
browser.get("http://www.python.org")
elem = browser.find_element_by_name("q")
elem.clear()
actions = ActionChains(browser)
actions.move_to_element(elem)
actions.click(elem) #select the element where to paste text
actions.key_down(Keys.META)
actions.send_keys('v')
actions.key_up(Keys.META)
actions.perform()
Run Code Online (Sandbox Code Playgroud)
小智 7
elem.send_keys(Keys.SHIFT, Keys.INSERT)
Run Code Online (Sandbox Code Playgroud)
当您尝试粘贴某些内容时,它在 macOS Catalina 上运行良好。
我目前无法在 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')
Run Code Online (Sandbox Code Playgroud)
这些sleep()语句只是为了能够看到步骤,它们当然不是程序运行所必需的。
ActionChainsend_key只是切换到所选元素并对其执行 a send_keys。
与其使用实际的键盘快捷键,不如让网络驱动程序获取文本。您可以通过查找元素的内部文本来完成此操作。
WebElement element1 = wd.findElement(By.locatorType(locator));
String text = element1.getText();
Run Code Online (Sandbox Code Playgroud)
这样,您的测试项目就可以实际访问文本。这对于日志记录很有用,或者可能只是确保文本说明了您想要说的内容。
从这里开始,您可以将元素的文本作为一个字符串进行操作,因此可以完全控制要粘贴到元素中的内容。现在就
element2.clear();
element2.sendKeys(text);
Run Code Online (Sandbox Code Playgroud)
其中element2是将文本粘贴到其中的元素
| 归档时间: |
|
| 查看次数: |
61519 次 |
| 最近记录: |