python - Python send_keys 方法未发送所需的值
问题描述
我正在编写一个将填写表格的脚本。它将具有特定值的字符串发送到应输入值的文本字段。然而,虽然文本字段总是被输入,但字符有时会变得乱码。例如,在一个字段中,要输入的值是:
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 文档中它说.key_down()
:
只能与修饰键(Control、Alt 和 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()
这看起来不会比我的第一个代码块产生更好的结果。
推荐阅读
- javascript - 使用 JavaScript 生成的 HTML 的 jQuery Masonry 不起作用
- c++ - 类函数的多重定义错误
- gradle - 使用 vertx 的 WebApiServiceGen 时出现“找不到代理类”
- jenkins - 詹金斯对声明性管道的投入
- java - 更改 Maven 依赖项的导入路径
- git - 如何使用 unidiff 解析器解析 git diff -U 输出
- r - 总结到最大的类别
- javascript - 使动态生成的表的最后一列浮动
- mysql - MySQL 关联表的连接数
- python - 如何仅在 Python 正则表达式中保留捕获的组?