首页 > 解决方案 > Python Selenium send_keys() 文本文件内空白区域的错误原因

问题描述

我在这里遇到了一个有趣的情况。我正在尝试为我的 Instagram 帐户自动化流程,当有人关注我时,向他发送直接消息,让他说“谢谢”之类的话。在此文本中还包含表情符号。所以我试图让它与表情符号一起工作,在我终于让它工作之后,我发现.send_keys()尝试从我的 .txt 文件发送文本的时间由于其中的空白区域而无法正常工作。例如,假设我在里面有这个文本:

My name is Bill 

I'm 22

由于它们之间的空白区域,这将不起作用。但是,如果我像这样连续写它们,那就My name is Bill I'm 22完全没问题了。所以我的问题是这样的。我想让它像第一个例子一样工作。任何人都可以在这里帮助我解决我的问题吗?

这是我为文本编写的代码:

with open(path + '\\text.txt', encoding='utf-8') as t_f:
        txt = t_f.read()

#Here is the element for typing my message
text_element = browser.find_element_by_xpath("""//*[@id="react-root"]/section/div/div[2]/div/div/div[2]/div[2]/div/div[2]/div/div/div[2]/textarea""")

#Here it processing the 'txt' to be able to have emojis
browser.execute_script("arguments[0].innerHTML = '{}'".format(txt),text_element)
text_element .send_keys('.')
text_element .send_keys(Keys.BACKSPACE)

标签: javascriptpythonselenium

解决方案


在 instagram 、 facebook 等 "\n" 是字符串的结尾。您必须改用 enter + shift 。

当你有多行时,它实际上以 '\n' 结尾

所以使用类似的东西:

text_element.click()

for part in txt.split('\n'):
    action = webdriver.ActionChains(driver)
    action.send_keys(part)
    action.key_down(Keys.SHIFT).key_down(Keys.ENTER).key_up(
        Keys.ENTER).key_up(Keys.SHIFT).perform()

推荐阅读