上一篇文章说到显示等待和隐式等待语句,我们继续学习下面的命令方法。

8.  定位一组元素

这里书上是自己写了一个页面代码,通过访问本地这个页面来举例。但我觉得找一个现有的页面自己琢磨更有意思,而且复杂的页面也会遇到复杂的问题。比如我根据163邮箱登录页面的 “十天内免登录” 复选框写了如下的代码:

 1 from selenium import webdriver
 2 import time
 3 
 4 driver = webdriver.Firefox()
 5 driver.get('http://mail.163.com/')
 6 driver.implicitly_wait(20) #这里加一个隐式等待命令,等待页面加载,不然可能会报错
 7 driver.switch_to_frame('x-URS-iframe') #163邮箱登录页面的复选框在一个框架内,所以需要定位到该框架内
 8 
 9 #选择页面上所有的tag name 为input的元素
10 inputs = driver.find_elements_by_tag_name('input') #一定要注意定位一组元素需要是 elements, 而不是element
11 
12 
13 #通过for循环找出type为checkbox的元素并且单击勾选
14 for i in inputs:
15     if i.get_attribute('type') == 'checkbox':
16         i.click()
17         time.sleep(1)
18         
19 print(len(inputs)) #这里结果打印出来是9,所以在这个框架内复选框的个数应该是9,但是比较直观的我们只能看到“十天内免登录”
20 
21 #driver.quit()
View Code

相关文章: