Python和Selenium - 避免在带换行符的send_keys()时提交表单

Álv*_*anz 6 python selenium sendkeys

我正在使用Python 3和selenium.

我们假设 var = "whatever\nelse"

我的问题是,当我使用elem.send_keys(var)它时,在"什么"之后发送表单(因为换行符)

我怎么能用+ SHIFT + ENTER + else 替换"whatever \nelse" ?

或者有没有其他方法来输入换行而不实际使用javascript或用换行符键替换换行符?

注意:elem是一个令人满意的div.

Aro*_*unt 7

您是否尝试过类似的方法:

ActionChains(driver).key_down(Keys.SHIFT).key_down(Keys.ENTER).key_up(Keys.SHIFT).key_up(Keys.ENTER).perform()
Run Code Online (Sandbox Code Playgroud)

喜欢

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

driver = webdriver.Chrome()
driver.get('http://foo.bar')

inputtext = 'foo\nbar'
elem = driver.find_element_by_tag_name('div')
for part in inputtext.split('\n'):
    elem.send_keys(part)
    ActionChains(driver).key_down(Keys.SHIFT).key_down(Keys.ENTER).key_up(Keys.SHIFT).key_up(Keys.ENTER).perform()
Run Code Online (Sandbox Code Playgroud)

ActionChains按下后将按key_downSHIFT + ENTER +的链key_up

像这样,您执行SHIFT+ ENTER,然后释放按钮,这样就不会全部写在大写锁定中(因为SHIFT)

PS:此示例添加了太多新行(由于上的简单循环inputtext.split('\n'),但您明白了。

  • 如果您同时更改了最后两个击键,则效果很好。如:`ActionChains(driver).key_down(Keys.SHIFT).key_down(Keys.ENTER).key_up(Keys.ENTER).key_up(Keys.SHIFT).perform()` (2认同)