Selenium2 + Python3.6实战(二):登录126邮箱

遇到问题:定位用户名和密码时,总是定位不到

解决过程:
126登录界面,定位用户名和密码时,总是定位不到,后来发现用户名和密码是在一个iframe中,使用Firepath插件定位元素,最左侧会显示iframe信息。通过Firepath显示的是当前活跃的iframe的html,想要定位iframe 可以使用firebug插件,右键点击界面任意位置选择:使用firebug定位元素,之后便可以进行iframe定位。

WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌页面上的元素无法直接定位。这个时候就需要使用switch_to.frame来切换表单,将当前定位的主体切换为frame/iframe表单的内嵌页面。默认情况下直接 driver.find_element_by...的路径是在Top Window。
  

详细代码:对照定位来选择

from selenium import webdriver

import time

 

driver = webdriver.Firefox( )

driver.get ("http://www.126.com")

time.sleep(3)       #此处一定记得要有时间,否则会抛出异常NoSuchElementException.

#定位并跳转到iframe

driver.switch_to_frame (driver.find_element_by_id ("x-URS-iframe"))

time.sleep(3)

#定位用户名和密码

email = driver.find_element_by_xpath ("//input[@name='email']")

email.clear( )

email.send_keys('XXXXXXX')

 

time.sleep(5)

passwd=driver.find_element_by_xpath ("//input[@name='password']")

passwd.send_keys("XXXXXX")

#点击确定按钮

driver.find_element_by_xpath ("//form[@id='login-form']/div[@class='m-container']/div[@class='f-cb loginbox']").click( )

time.sleep(5)

driver.quit ( )

posted @ 2017-06-16 11:02  杀人的微笑A  阅读(300)  评论(0编辑  收藏  举报