硒 send_keys 格式化

selenium send_keys formatting

我想将文本填充到所选元素,它是一个聊天框,如下所示:

Hi,
It's me

我试过这样写代码:

element.send_keys("""
Hi,
It's me
"""")

问题是“嗨”无意间被发送到聊天室并在聊天框中留下了“是我”。有替代方案吗?

最简单的方法是在字符串中间添加一个“Enter”键。

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

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--start-maximized")
chromedriver = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'chromedriver.exe')
chrome = webdriver.Chrome(chromedriver, options=chrome_options)

chrome.get("https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_textarea")

iframe = chrome.find_element_by_xpath('//*[@id="iframeResult"]')
chrome.switch_to.frame(iframe)
chrome.find_element_by_xpath('//*[@id="w3review"]').clear()
chrome.find_element_by_xpath('//*[@id="w3review"]').send_keys("Hello" + Keys.ENTER + "World")

但是,这很可能不适用于您的“聊天应用”。原因是“Enter”也用于发送消息。如果是这种情况,您需要使用动作链。这是一个如何完成的示例:

from selenium.webdriver.common.action_chains import ActionChains

action = ActionChains(chrome)

el = chrome.find_element_by_xpath('//*[@id="w3review"]')

action.move_to_element(el)\
    .click(el)\
    .send_keys("Hello")\
    .key_down(Keys.SHIFT)\
    .send_keys(Keys.ENTER)\
    .key_up(Keys.SHIFT)\
    .send_keys("World")\
    .perform()