【发布时间】:2020-03-10 03:08:17
【问题描述】:
在 PhantomJS (python 2.7) 中使用 Selenium 我在页面上找到一个文本框 (Cisco Unity 7 FYI),并尝试发送密钥。
driver.find_element_by_id("pwdPwdPassword").send_keys("12345678")
driver.save_screenshot('screen.png')
查看屏幕截图,实际上只发送了 2 个键。不确定哪些是 Unity 掩盖了密码。我注意到,如果我在 IDLE 中浏览我的脚本并慢慢进入
driver.find_element_by_id("pwdPwdPassword").send_keys("1")
driver.find_element_by_id("pwdPwdPassword").send_keys("2")
driver.find_element_by_id("pwdPwdPassword").send_keys("3")
driver.find_element_by_id("pwdPwdPassword").send_keys("4")
....
击键实际上进入了文本框。我尝试在脚本中的每个 send_keys 之间放置一个 time.sleep(2),但结果是相同的。我希望有一个技巧,这样我就不必在我的脚本中添加 30 秒来输入这个密码!
谢谢!!!
【问题讨论】:
-
您使用的是什么版本的 webdriver?你使用的是什么浏览器?不同的页面或浏览器是否存在相同的行为?如果这种情况仅取决于应用程序,我唯一的建议是制作您自己的“棘手”发送密钥方法。比如
def send_keys( element, keys_to_send): for key in keys_to_send: element.send_keys(key)(当然要先定义元素) -
对不起! WebDriver 2.37.2,PhantomJS 1.9.2。我已经用 Chrome 对其进行了测试,它可以工作,所以我猜它是一个 PhantomJS 问题。我需要一个无头浏览器,你知道它是否可以与 Chrome 一起使用?谢谢
-
在 Ubuntu 上我使用的是 pyvirtualdisplay 库。在我的情况下,它实际上是虚拟显示器上的 Chromedriver
-
这将在 Windows 机器上运行,我可以设置 xming 或远程 xserver 将显示发送到,但我希望没有它我可以做到这一点。看来 phantomjs 是我唯一可以在没有本地 gui 的情况下运行的浏览器。
-
太糟糕了。所以,使用我棘手的网络或类似的东西。或者你可以通过 js 粘贴值。成千上万的解决方法:)