一个练手的网站
自动登陆 密码提交 定位它的余额 其它的大部分我都进了
就是想获取它的球队名 但是总是定位不到给我报了个找不到的错误
如图:
网站的球队名如图:
![图片描述][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/