python selenium send_keys CONTROL,'c'不复制实际文本

时间:2016-06-11 11:18:03

标签: python selenium screen-scraping

我成功突出显示网页中的部分,但是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编辑菜单选择所有并复制文本,但也无法正常工作,无法在网上找到任何可能的帮助,除了可能提到的bug(尝试旧版本的Firefox,但没有解决问题)。有什么想法吗?

4 个答案:

答案 0 :(得分:1)

尝试使用以下代码:

在下面添加标题以导入ActionChains

从selenium.webdriver.common.action_chains

导入ActionChains

actions = ActionChains(driver)

actions.key_down(Keys.CONTROL)

actions.send_keys("c")

actions.key_up(Keys.CONTROL)

答案 1 :(得分:1)

这个确实有效,它更新到这个日期并且还测试了几次。

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

答案 2 :(得分:0)

尝试一下:

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 :(得分:0)

您没有定义“ elim”是什么 尝试:

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