繁体   English   中英

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

[英]Why does my Selenium code work in the Python Shell but not from a file?

这是我的代码:

from selenium import webdriver
browser = 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()却行不通,则需要加分,我必须找到该按钮并单击该链接。提交()页面重置,密码字段变为空白。不知道为什么

在此处输入图片说明

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM