简体   繁体   中英

selenium send_keys formatting

I want to fill a text to a selected element which is a chatbox like this:

Hi,
It's me

I tried to write the code like this:

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

The thing is "Hi" is sent unintentionally to the chat and leaves "It's me" in the chatbox. Is there an alternative?

The simpliest way how to do this is by adding an "Enter" key in the middle of the string.

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")

However, this will most likely not work in your "chat app". The reason being is that "Enter" is also used to send the message. If that is the case, you need to use an action chain. Here is an example how it can be done:

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()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM