为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的Selenium代码在Python Shell中可以工作,但不能在文件中工作?

为什么我的Selenium代码在Python Shell中可以工作,但不能在文件中工作?

哆啦的时光机 2021-05-07 15:22:56
这是我的代码:from selenium import webdriverbrowser = webdriver.Firefox()browser.get('https://mail.yahoo.com')emailElem = browser.find_element_by_id('login-username')emailElem.send_keys('myemail@sbcglobal.net')emailElem.submit()passwordElem = browser.find_element_by_id('login-passwd')passwordElem.send_keys('password')signInLink = browser.find_element_by_id('login-signin')signInLink.click()当我在外壳中分别键入每一行时,它可以正常工作,并且可以登录我的电子邮件,但是,当我从文件运行脚本时,它在第8行崩溃。错误消息是“无法找到元素[id = “” login-passwd“]。虽然不知道为什么它可以在shell中工作,但显然在那里它确实找到了该字段。请参见下面的屏幕截图,以便您可以看到它如何在shell上工作(左侧),但是当从外壳程序运行时会崩溃文件(右),如果您能告诉我为什么使用emailElem.submit()可以工作,但是不能使用passwordElem.submit()可以,那么我要加分,我必须找到该按钮并单击该链接。提交()页面重置,密码字段变为空白。不知道为什么
查看完整描述

1 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

该脚本的运行速度比粘贴外壳程序中的每一行都要快-由于该元素是在页面中动态创建的,因此,粘贴每一行时,您会给浏览器足够的时间来运行javascript代码并生成该元素。

运行脚本时,在创建元素之前已到达搜索元素的行,因此会出现错误。

有许多可能的解决方案,通常涉及使用硒等待方法,或time.sleep或这些方法的组合。


查看完整回答
反对 回复 2021-05-25
  • 1 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号