使用selenium时,登录页无法将字段识别为已完成

2024-04-25 02:30:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用以下代码在网站上输入用户名和密码,然后登录(通过发送回车键)

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

browser = webdriver.firefox()
browser.get('http://www.example.com')

username = browser.find_element_by_id("username")
password = browser.find_element_by_id("password")

username.send_keys("MyUsername")
password.send_keys("MyPassword")

password.send_keys(Keys.ENTER)

这是预期的工作,但我遇到了一些麻烦,当网站验证字段。按enter键后,返回消息“Username is required”,尽管字段已完成。你知道吗

这个问题是否与使用JS或Knockout的登录页面有关?如果是这样,我对这两个都不熟悉。有解决办法吗?你知道吗

以下是HTML格式:

<form class="form-horizontal" action="/Pretend_login" method="post">
    <div class="form-group">
        <div >
            <input data-bind="value:email" name="username" type="email" class="form-control" id="username" placeholder="Email">
        </div>
    </div>
    <div class="form-group">
        <div >
            <input data-bind="value:password" name="password" type="password" class="form-control" id="password" placeholder="Password">
        </div>
    </div>
    <div class="form-group"  data-bind="visible: error_message().length">
        <div>
            <span class="text-danger" data-bind="text: error_message"></span>
        </div>
    </div>
    <div class="form-group">
        <div >
            <a role="button" href="/Forgotten_password">Forgotten password?</a>
        </div>
    </div>
    <div class="form-group">
        <div>
            <button data-bind="click: login" type="submit" class="btn btn-primary">Sign in</button>
        </div>
    </div>
</form>

Tags: divbrowserformsendiddatabindtype
1条回答
网友
1楼 · 发布于 2024-04-25 02:30:14

我不确定这是否适用于测试中的页面,但我在一个同样使用JavaScript验证用户输入的web应用程序中遇到了类似的问题。问题是,只有当另一个输入字段获得焦点时,才会触发此验证。所以你基本上可以在这里尝试一些东西:

  1. 填写字段后,使用JavaScriptExecutor触发模糊事件
  2. 发送密钥(键.TAB)填写字段后
  3. 单击任何其他输入字段-这也会触发模糊事件

我只能提供Java示例,因为我还没有用Python做任何事情。如果这仍然有用,请告诉我。 模糊事件的Java示例:

String highlight = "arguments[0].blur()";
((JavascriptExecutor) getDriver()).executeScript(highlight, element);

相关问题 更多 >