python - selenium2网页框架元素定位 问题????

查看:124
本文介绍了python - selenium2网页框架元素定位 问题????的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

一个练手的网站
自动登陆 密码提交 定位它的余额 其它的大部分我都进了
就是想获取它的球队名 但是总是定位不到给我报了个找不到的错误
如图:

网站的球队名如图:

![图片描述][2]

网站定位的框架如图:
![图片描述][3]

代码如下:

    from selenium import webdriver

driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.set_window_position(10,100)
driver.set_window_size(1280, 700)
driver.get('http://66.133.87.55/')




iframe =driver.find_element_by_name('SI2_mem_index')
driver.switch_to.frame(iframe)

'''点击旧网站'''
test_crown = driver.find_element_by_xpath('//*[@id="oldspan"]')
test_crown.click()

'''账号'''
username = driver.find_element_by_id('username')
username.clear()
username.click()
username.send_keys('testName888')

'''密码'''
userpasswrod = driver.find_element_by_id('passwd')
userpasswrod.clear()
userpasswrod.click()
userpasswrod.send_keys('aaa888')

'''提交登陆'''
landing = driver.find_element_by_class_name('za_button')
landing.click()

'''获取当前信用额'''

iframe1 = driver.find_element_by_id('header')
driver.switch_to.frame(iframe1)
credit = driver.find_element_by_xpath('//*[@id="credit"]')
# print(driver.title)
# print(credit.get_attribute('text'))
# print(credit.title)
print('当前信用额度是{}'.format(credit.text))

'''获取球队名'''

team = driver.find_element_by_id('body')
driver.switch_to.frame(team)

# team1 = driver.find_element_by_class_name('team_name none')
team1 = driver.find_element_by_xpath('//*[@id="TR_11-1040166_1"]')

print(team1.text)

折腾了大半天 没效果

但是我把代码:

 获取球队名 的代码跟 获取信用额度的代码 调换了下 可以执行球队名 但不执行 获取信用额度
 如图:
 ![图片描述][4]
 

解决方案

(这题我自学两个晚上才懂)

不论把谁放到前边都能成功,是因为嵌套frame/iframe需要一层一层跳转,且只能从defaultcontent跳最高frame,父亲frame跳向儿子frame。平级不能跳

所以你第二次要返回先SI2_mem_index的,才能再跳(header和body的两个iframe平级)

driver.switch_to_default_content()
driver.switch_to.frame('SI2_mem_index')

测试结果图片插不进来,我放到博客里了:https://lypro09539.github.io/

这篇关于python - selenium2网页框架元素定位 问题????的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆