gpt4 book ai didi

javascript - Selenium 清除文本并将文本输入到 textarea 文本框中 [Python]

转载 作者:行者123 更新时间:2023-12-01 00:16:18 30 4
gpt4 key购买 nike

我正在使用 Selenium 进行一些抓取。我使用以下代码将文本输入到 textarea 文本框中:

def clear_and_send_key_then_wait(element, key, sleep_time = 1):
# For some reason this does not work
# element.clear()

# This works
element.send_keys(Keys.CONTROL + "a");
element.send_keys(Keys.DELETE);

# Input text
element.send_keys(key)
time.sleep(sleep_time)

target_textbox = driver.find_element_by_xpath(
"""/html/body/div[2]/div/div[2]/div[1]/div[4]/div[1]/div/textarea""")
clear_and_send_key_then_wait(target_textbox, 'z'*100000)

问题1:为什么 element.clear() 不删除文本框中的现有文本?

由于需要在文本框中输入大量文本,因此上述方法速度太慢。相反,我使用建议的第一个 Javascript 方法 execute_script here .

但是,仅执行以下操作不会填充文本框。

driver.execute_script("arguments[0].value=arguments[1];", 
target_textbox, "z"*100000)

该文本仅在紧随 execute_script 行之后的另一个 send_key 命令后出现:

driver.execute_script("arguments[0].value=arguments[1];", 
target_textbox, "z"*100000)
target_textbox.send_keys(Keys.ENTER)

问题2:为什么需要后面的target_textbox.send_keys(Keys.ENTER)?看来在链接中,作者不需要发送 Enter 键。它是不同类型的文本框吗?如果是,有哪些不同类型的文本框?它们都有不同的行为吗?

提前致谢!

最佳答案

Selenium 不会在清除时触发任何键盘或鼠标事件。当您使用 JavaScript 设置值时也会发生同样的情况。网站可能会等待按键事件来对文本区域的值进行一些工作,并使用任何按键触发 send_keys

您可以尝试下面的代码,\ue007是Enter键:

driver.execute_script("arguments[0].value=arguments[1];", target_textbox, "z"*100000 + "\ue007")

关于javascript - Selenium 清除文本并将文本输入到 textarea 文本框中 [Python],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59740310/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com