python selenium表单定位


在Web应用中经常会遇到frame/iframe 表单嵌套页面的应用,WebDriver 只能在一个页面上对元素识别与定位,对于frame/iframe 表单内嵌页面上的元素无法直接定位。
这时就需要通过switch_to.frame()方法将当前定位的主体切换为frame/iframe 表单的内嵌页面中:
如下两个例子:
1 、 163邮箱登入界面:https://mail.163.com/
2 、电信话费查询界面:https://uac.10010.com/portal/mallLogin.jsp?redirectURL=//www.10010.com
3、alert :弹出的提示框 d.switch_to_alert()
4 、群里有个小伙伴:http://login.189.cn/web/login 登入后输入密码 ,id定位不到了,(单步执行可以)后来发现是焦点丢失(这里感谢翎儿/jack指导)

# -*- coding: UTF-8 -*- 
from selenium import webdriver
from time import sleep
url1='https://mail.163.com/'
account='shalalla'
driver = webdriver.Chrome()
driver.maximize_window()
driver.get(url1)
sleep(2)
driver.switch_to.frame("x-URS-iframe") #切换到表单
driver.find_element_by_name("email").clear()
driver.find_element_by_name("email").send_keys(account)


2 、 电信话费查询界面:https://uac.10010.com/portal/mallLogin.jsp?redirectURL=//www.10010.com

>>> from selenium import webdriver
>>> url='https://uac.10010.com/portal/mallLogin.jsp?redirectURL=//www.10010.com'
>>> account='18605028607'
>>> d = webdriver.Chrome()
>>> d.maximize_window()
>>> d.get(url)
>>> d.switch_to.frame(d.find_element_by_tag_name("iframe"))
>>> d.find_element_by_id("userName").clear()

3、alert :弹出的提示框 d.switch_to_alert()


4 、群里有个小伙伴:http://login.189.cn/web/login 登入后输入密码 ,id定位不到了,(单步执行可以)后来发现是焦点丢失(这里感谢翎儿/jack指导)

  
可能是输入账号后页面刷新了,也可能是其他原因,加了actionchains 解决了:
 1 from selenium import webdriver
 2 from selenium.webdriver.common.action_chains import ActionChains
 3 from time import sleep
 4 d=webdriver.Chrome()
 5 d.maximize_window()
 6 d.get('http://login.189.cn/web/login')
 7 a=d.find_element_by_name('Account')
 8 a.clear()
 9 a.send_keys('1234')
10 sleep(3)
11 click_b1=d.find_element_by_xpath(".//input[@id='txtShowPwd']")
12 # click_b1=d.find_element_by_id('txtShowPwd')
13 sleep(1)
14 ActionChains(d).click(click_b1).send_keys('1234').perform()
View Code

 ActiionChains补充学习地址:

http://blog.csdn.net/huilan_same/article/details/52305176

 ---------------------------------------------------

以下是后来的各种元素定位的坑集合:

 

 

 




 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM