<select>标签多了一个multiple="multiple"的属性,这意味着该下拉列表的选项可以多选。
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import Select
driver = webdriver.Chrome()
driver.get('C:\\Users\\Desktop\\my_html.html')
ele = driver.find_element_by_id('s1Id')
Select(ele).select_by_index(1)#通过 index定位
sleep(2)
Select(ele).deselect_by_index(1)#取消选择
Select(ele).select_by_index(1)
Select(ele).select_by_index(2)
Select(ele).select_by_index(3)
Select(ele).deselect_all()#取消所有选择
sleep(3)
driver.quit()
获取选项
获取所有option,并依次选中。
◆select提供了3个属性用于获取选项
Options——返回包含所有选项的列表,其中选项是WebElement元素。
all_selected_options——返回包含所有被选中的选项的列表。
first_selected_option——提供第一个被选中的选项,也可以用于获取下拉列表的默认值。
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import Select
driver = webdriver.Chrome()
driver.get('C:\\Users\\Desktop\\my_html.html')
ele = driver.find_element_by_id('s1Id')
all_options=Select(ele).options #返回所有option
for i in range(len(all_options)):
Select(ele).select_by_index(i)#循环option依次选中
all=Select(ele).all_selected_options #获取所有被选择的选项
for i in all:
print(i.text)
driver.quit()
判断select下拉列表中的选项是否可多选
◆Select提供了一个属性,用来判断是否可多选is_multiple——返回一个布尔值,判断select选项是否可多选。
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import Select
driver = webdriver.Chrome()
driver.get('C:\\Users\\Desktop\\my_html.html')
ele = driver.find_element_by_id('s1Id')
print(Select(ele).is_multiple)
场景二:假如想输出表格中所有单元格的值呢?
思路:先定位页面中的表格对象元素;然后在该表格中,通过tag name = 'tr'找所有行;最后在每行中,通过tag name = 'td'找所有单元格。
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get('C:\\Users\\Desktop\\my_html.html')
table = driver.find_element_by_xpath('/html/body/table[1]')
rows = table.find_elements_by_tag_name('tr')
cols = rows[0].find_elements_by_tag_name('td')
for i in range(len(rows)):
for j in range(len(cols)):
cell = rows.find_elements_by_tag_name('td')[j]
print(cell.text)
driver.quit()
框架
●frame一般用来设置页面布局,将整个页面分成规则的几块,每一块里面包含一个新页面;iframe用来在页面的任何地方插入一个新的页面。
from selenium import webdriver
from time import sleep
import os
对于“input类型文件上传”功能,我们可以通过“send_keys”+“文件”的方式跳过对文件选择弹窗的操作。要知道这个文件选择弹窗是Windows弹窗,而WebDriver的操作范围是浏览器,我们是无法让其控制Windows弹窗的。
from selenium import webdriver
from time import sleep