Python Selenium send_keys无法复制实际文本

5

我成功地在网页中突出显示了该部分,但是send_keys,.send_keys(Keys.CONTROL,“c”),并没有将意图复制的文本放在剪贴板中,只有我最近手动复制的内容在剪贴板中:

from selenium import webdriver 

from selenium.webdriver.common.keys import Keys 

driver = webdriver.Firefox() 

driver.get("http://www.somesite.com") 

driver.find_element_by_id("some id").send_keys(Keys.CONTROL, "a") #this successfully highlights section I need to copy 

elem.send_keys(Keys.CONTROL, "c") # this does not actually copy text**

我尝试使用Firefox的编辑菜单选择所有内容并复制文本,但这也没有效果,并且除了可能提到的错误之外,找不到任何在线帮助。 (尝试了旧版Firefox,但未解决问题)。你有什么建议吗?


你在elem.send_keys这一行之前有声明elem吗?如果你把它替换为driver.find_element_by_id("some id").send_keys(Keys.CONTROL, "c")会发生什么? - stuartmccoll
太棒了,非常感谢,您的建议可行。我将 "elem.send_keys(Keys.CONTROL, "c")" 替换为 "driver.find_element_by_id("ires").send_keys(Keys.CONTROL, "c")"。 - mills
5个回答

7

尝试使用以下代码:

在头部中导入ActionChains以进行包含

from selenium.webdriver.common.action_chains import ActionChains


actions = ActionChains(driver)

actions.key_down(Keys.CONTROL)

actions.send_keys("c")

actions.key_up(Keys.CONTROL)

对于所有查看此答案的人,请注意,必须在每个操作后调用.perform(),例如actions.key_down(Keys.CONTROL).perform() - Timmy Diehl

4

试试这个:

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

driver = webdriver.Firefox()
driver.get("http://www.somesite.com")  
driver.find_element_by_id("some id").send_keys(Keys.CONTROL, "a")
driver.find_element_by_id("some id").send_keys(Keys.CONTROL, "c")

3
这个实际上是有效的,它已经更新到最新日期并且也进行了多次测试。
from selenium.webdriver.common.action_chains import ActionChains


def clear_text(self):
    webdriver.ActionChains(self.driver).key_down(Keys.CONTROL).perform()
    webdriver.ActionChains(self.driver).send_keys("a").perform()
    webdriver.ActionChains(self.driver).key_up(Keys.CONTROL).perform()
    webdriver.ActionChains(self.driver).send_keys(Keys.DELETE).perform()
    

现今的技术中,ActionChains非常有用,不要忘记在每个操作后使用.perform()

如果你需要在类中使用这些功能:

text_box.click() #or other clicking function so you are actually typing
self.clear_text()  # Because it stands by itself

1

您没有定义"elim"是什么。 请尝试:

elim = driver.find_element_by_id("some_id")
elim.send_keys(Keys.CONTROL, "a")
elim.send_keys(Keys.CONTROL, "c")

0

NameError: name 'Keys' is not defined

这意味着您需要在Selenium项目中导入Keys。

from selenium.webdriver.common.keys import Keys

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接