Python send_keys 方法未发送所需的值

标签 python selenium headless

我正在编写一个用于填写表格的脚本。它将具有特定值的字符串发送到应输入该值的文本字段。然而,虽然文本字段总是被输入,但字符有时会变得困惑。例如,在一个字段中,要输入的值为:

420420420420420

然而,填写字段的屏幕截图产生了这个值:

420404204204202

这是为什么呢?是否有替代方法可以避免此问题?

具体来说,这些代码行导致的问题最多:

client.find_element_by_id("nnaerb").send_keys(checkout_parameters[9])
client.find_element_by_id("credit_card_month").send_keys(checkout_parameters[10])
client.find_element_by_id("credit_card_year").send_keys(checkout_parameters[11]) 

最佳答案

嗯,这很奇怪,它会以错误的顺序发送它们。你可以尝试这样的事情:

for key in checkout_parameters[9]:
    client.find_element_by_id("nnaerb").send_keys(key)

这样您就可以指定按顺序一次发送一个吗?

或者你真的可以将其分解并使用ActionChains:

from selenium.webdriver import ActionChains
action_chains = ActionChains(client)
action_chains.move_to_element(client.find_element_by_id("nnaerb"))
action_chains.click()
for key in checkout_parameters[9]:
    action_chains.key_down(key)
    action_chains.key_up(key)
action_chains.perform()

编辑

来自selenium documentation它说关于.key_down():

Should only be used with modifier keys (Control, Alt and Shift).

所以使用 ActionChains 看起来就像:

from selenium.webdriver import ActionChains
action_chains = ActionChains(client)
action_chains.move_to_element(client.find_element_by_id("nnaerb"))
action_chains.click()
for key in checkout_parameters[9]:
    action_chains.send_keys(key)
action_chains.perform()

这看起来不会比我的第一个代码块产生更好的结果。

关于Python send_keys 方法未发送所需的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55541492/

相关文章:

python - 算法运行时迭代for循环分析

java - 从 jython 调用具有可变长度参数(varags)的 Java 方法

python - 将列表中的真值与另一个列表进行比较

java - Eclipse headless (headless)构建不会创建 jar 文件

Python - 如何在拆分字符串时忽略双引号中的空格?

java - 如何等待具有相同类名的所有元素?

python - Selenium 网络驱动程序 : how do respond on a prompt

selenium - 迭代并打开新的浏览器页面导致 StaleElementReferenceException

jenkins - 如何在 headless (headless) Linux 上运行 appium

Mac OS X 服务器上的 Java : game over?