氡同学 2021-05-02 12:08 采纳率: 100%
浏览 137
已采纳

用selenium模拟登录,网页中能找到id为Username的input标签,为什么提示无法找到?

代码如下:
from selenium import webdriver
import time
import json

user="xxx"
password="xxxxx"
driver = webdriver.Chrome()
driver.get('http://61.144.253.234:54040/szwsbsdt.html?ReturnUrl=%2f')
time.sleep(3)
driver.find_element_by_xpath("//*[@onclick]").click()
print("正在输入用户名和密码")
#清空登录框
driver.find_elements_by_xpath("//input").clear()
#自动填入登录用户名
driver.find_element_by_xpath("//input[@id='UserName']").send_keys(user)

错误提示:selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//input[@id='UserName']"}<br />   (Session info: chrome=90.0.4430.93)

网页源码如下:

  • 写回答

5条回答 默认 最新

  • CSDN专家-HGJ 2021-05-02 15:10
    关注

    通过多种方式进行尝试:

    1.在第15行加入 ,driver.implicitly_wait(10),设置等待时间。

    2.在定义driver时加入options.add_argument("start-maximized"),最大化浏览器启动窗口。

    3.看这个输入窗口是不是在一个iframe中,如果是的话,要先用driver.switch_to.frame(...),,然后再进行输入操作。

    4.根据页面加载情况,用WebDriverWait,等页面加载后获取节点。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容