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

这是我的代码:


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()可以,那么我要加分,我必须找到该按钮并单击该链接。提交()页面重置,密码字段变为空白。不知道为什么

http://img3.mukewang.com/60acc19d000149c813510600.jpg

哆啦的时光机
浏览 191回答 1
1回答

慕田峪9158850

该脚本的运行速度比粘贴外壳程序中的每一行都要快-由于该元素是在页面中动态创建的,因此,粘贴每一行时,您会给浏览器足够的时间来运行javascript代码并生成该元素。运行脚本时,在创建元素之前已到达搜索元素的行,因此会出现错误。有许多可能的解决方案,通常涉及使用硒等待方法,或time.sleep或这些方法的组合。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python