【问题标题】:python playwright - issues with typing inside the input fieldspython playwright - 在输入字段中输入的问题
【发布时间】:2021-09-08 16:38:51
【问题描述】:

我正在尝试用python playwright编写脚本来登录网站,这是我的代码:

import json
import sys
import bs4
import urllib.parse

link = 'https://secure.libertycable.com/login.php'
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
    #browser = p.chromium.launch()
    context = browser.new_context(user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36')
    page = context.new_page()
    page.goto(link)
    try:
        try:
            page.click('#close')
        except Exception as e:
            page.wait_for_timeout(1000)
        page.type('#user input[name="email"]', "xxxxx")
        page.type('#myInput input[name="password"]', "xxxxxxxxxxxx")
        page.close()
        context.close()
        browser.close()      
    except Exception as e:
        print("Error in playwright script.")
        page.close()
        context.close()
        browser.close() 

这是页面来源的一部分:

     <form class="form-group" id="login_form2" name="login_form2" method="post" action="do_login.php">\n                <input type="hidden" name="go_url" value="">\n                <div style="width:50%;">\n                <label>Email Address*:</label><br>\n                <input class="form-control" type="email" name="email" id="user" size="25" value="">\n                <label>Password*:</label><br><input class="form-control" type="password" name="password" id="myInput" size="25" value="">\n                    <span toggle="#password-field" class="fa fa-fw fa-eye field-icon toggle-password" title="View Password" onclick="passwordToggle()"></span>\n                </div>\n                <br clear="all">\n                <div class="btn btn-green" onclick="document.getElementById(\'login_form2\').submit();"><i class="fa fa-sign-in fa-fw"></i> Login</div>\n                <br><span class="text-muted">*Please Note: Email address and password are case sensitive!</span>\n                </form>\n                <br>\n                <p><a href="reset-password.php" class="blueText">Forgot Password?</a></p>\n

脚本进入页面,关闭 id 为 #close 的弹出窗口,效果很好,但是当需要填写输入字段时,脚本什么也不做,有什么帮助吗?

【问题讨论】:

    标签: python playwright playwright-python


    【解决方案1】:

    usermyInput 是输入元素本身的 ID,而不是父元素之一。这意味着,在您的场景中使用这样的选择器:

        page.type('input[name="email"]#user', "xxxxx")
        page.type('input[name="password"]#myInput', "xxxxxxxxxxxx")
    

    挂起的原因是找不到元素。我建议按照Playwright debugging tools 部分使用DEBUG=pw:apiPWDEBUG=1 获取调试日志为什么它挂起 - 在你的情况下,它会告诉你找不到选择器。

    【讨论】:

    • 电子邮件输入有效,但密码仍然无效
    猜你喜欢
    • 2022-06-29
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 2019-03-27
    • 1970-01-01
    • 2018-12-31
    • 2019-03-13
    • 2023-04-01
    相关资源
    最近更新 更多