任务
【Task5 安装selenium并学习】:(1天)
安装selenium并学习。
使用selenium模拟登陆163邮箱。
163邮箱直通点:https://mail.163.com/ 。
安装selenium
pip3 install selenium
使用selenium打开网址
from selenium import webdriver
brower = webdriver.Firefox()
brower.get('http://mail.163.com/')
此时会弹Firefox(前提是电脑上安装了Firefox,我用的是mac osx)
在URL地址栏有一个机器人的图标,把鼠标放上去,会显示“浏览器正被远程控制”
寻找输入用户名及密码的框
>>> browser.find_element_by_name("email").send_keys("username")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'browser' is not defined
按照网上的文章直接输入以上内容,结果是NameError
再找,看到这样的写法:
browser.switch_to.frame('x-URS-iframe')
#仍然报错:
selenium.common.exceptions.NoSuchFrameException: Message: x-URS-iframe
再找:
browser.switch_to.frame(browser.find_element_by_xpath("//iframe[starts-with(@id,'x-URS-iframe')]"))
# iframe是第一个大坑,必须切入才行,第二大坑是这个iframe的id是动态的,直接搞死初学者,解决办法是用starts-with
寻找Frame
知道有Frame,不知道怎么找,先通过view page source, 到HTML 源码去查找,结果没有找到.
通过网上,看人家的文章,才了解到要这样去查找:
Inspect -> 定位到要找的目标登录框,在Elements中,搜索frame,可以看到<iframe name="" frameborder=“0” id=“x-URS-iframe1551831793413.544” …
登录进入系统
browser.find_element_by_xpath("//input[starts-with(@id,'auto-id-')]").send_keys("******")
time.sleep(0.5)
browser.find_element_by_xpath("//input[starts-with(@placeholder,'输入密码')]").send_keys("*******")
time.sleep(0.5)
browser.find_element_by_xpath('//*[@id="dologin"]').click()
time.sleep(0.5)
解决以上两个问题,后面就顺了