3.selenium中iframe和下拉框操作

一、iframe切换

当页面中包含iframe时,不能直接操作iframe中的元素,需要先切换进iframe,再进行操作

selenium通过driver.switch_to.frame(frame_reference)来切换

selenium切换iframe有三种方式

1.1 通过webelement

使用webelement进行切换是最灵活的选择,先定位到iframe然后再切换到它

import time
​
​
from selenium import webdriver
​
# 使用with语句进行上下文管理
# 异常时也会关闭游览器驱动
with webdriver.Chrome() as driver:
    driver.get('https://www.w3school.com.cn/tiy/t.asp?f=eg_html_form_radio')
​
    # 切换iframe
    # 1.webelement的方式
    # 先获取到iframe
    iframe=driver.find_element_by_id('iframeResult')
    # 再切换到
    driver.switch_to.frame(iframe)
    
    # 找到female单选框
    female=driver.find_element_by_xpath('//input[@value="female"]')
    print(female)

1.2 通过name或id

iframe一般都会有id或name属性,则可以使用该属性进行切换,如果name或id在页面上不唯一,name将切换到找到的第一个

import time
​
from selenium import webdriver
​
# 使用with语句进行上下文管理
# 异常时也会关闭游览器驱动
with webdriver.Chrome() as driver:
    driver.get('https://www.w3school.com.cn/tiy/t.asp?f=eg_html_form_radio')
​
​
    # 2.name/id的方式
    # 直接通过name/id切换
    driver.switch_to.frame('iframeResult')
​
​
    # 找到female单选框
    female=driver.find_element_by_xpath('//input[@value="female"]')
    print(female)

1.3 通过iframe在页面中的索引进行切换(从0开始)

通过页面iframe的索引进行切换

import time
​
from selenium import webdriver
​
# 使用with语句进行上下文管理
# 异常时也会关闭游览器驱动
with webdriver.Chrome() as driver:
    driver.get('https://www.w3school.com.cn/tiy/t.asp?f=eg_html_form_radio')
​
    # 3.使用索引,索引从0开始
    # 切换到第二个iframe
    time.sleep(1)
    driver.switch_to.frame(1)
​
    # 找到female单选框
    female=driver.find_element_by_xpath('//input[@value="female"]')
    print(female)

1.4 离开iframe

离开iframe,切换到默认window

# 切回到默认内容
driver.switch_to.default_content()

二、下拉框切换

2.1 通过option操作

import time
​
from selenium import webdriver
from selenium.webdriver.support.ui import Select
​
# 使用with语句进行上下文管理
# 异常时也会关闭游览器驱动
with webdriver.Chrome() as driver:
    driver.get('https://www.w3school.com.cn/tiy/t.asp?f=eg_html_elements_select')
​
    # 切换iframe
    iframe=driver.find_element_by_id('iframeResult')
    driver.switch_to.frame(iframe)
​
    # 找到audi选项
    # 1.通过option直接操作
    option=driver.find_element_by_xpath('//option[@value="audi"]')
    option.click()
    time.sleep(3)

2.2 通过select类操作

select.select_by_index(index)         参数index表示的option索引

select.select_by_value(value)         参数value表示的是option元属中value的属性值

select.select_by_visible_text(visible_text )         参数visible_text表示的是option的文本内容

import time
​
from selenium import webdriver
from selenium.webdriver.support.ui import Select
​
# 使用with语句进行上下文管理
# 异常时也会关闭游览器驱动
with webdriver.Chrome() as driver:
    driver.get('https://www.w3school.com.cn/tiy/t.asp?f=eg_html_elements_select')
​
    # 切换iframe
    iframe=driver.find_element_by_id('iframeResult')
    driver.switch_to.frame(iframe)
​
    # 2.通过select类操作
    # 找到select
    select=Select(driver.find_element_by_xpath('//select[@name="cars"]'))
    # 2.1通过索引操作
    # 选中索引为1的选项,索引从0开始
    select.select_by_index(1)
    time.sleep(3)
    # 2.2通过value操作(选中value等于audi的选项)
    select.select_by_value('audi')
    time.sleep(3)
    # 2.3选中option的文本为volvo的选项
    select.select_by_visible_text('Volvo')
    time.sleep(3)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值