第三:selenium中iframe和下拉框操作 一.iframe切换1.当页面中包含iframe时不能直接操作iframe中的元素需要先切换进iframe再进行操作2.selenium通过driver.switch_to.frame(frame_reference)来切换二.selenium切换iframe有三种方式1.通过webelement1.1.使用webelement进行切换是最灵活的选择先定位到iframe然后再切换到它importtime ​ ​fromseleniumimportwebdriver ​# 使用with语句进行上下文管理# 异常时也会关闭游览器驱动withwebdriver.Chrome()asdriver:driver.get(https://www.w3school.com.cn/tiy/t.asp?feg_html_form_radio)​# 切换iframe# 1.webelement的方式# 先获取到iframeiframedriver.find_element_by_id(iframeResult)# 再切换到driver.switch_to.frame(iframe)# 找到female单选框femaledriver.find_element_by_xpath(//input[valuefemale])print(female)2.通过name或id2.1.iframe一般都会有id或name属性则可以使用该属性进行切换如果name或id在页面上不唯一name将切换到找到的第一个importtime ​fromseleniumimportwebdriver ​# 使用with语句进行上下文管理# 异常时也会关闭游览器驱动withwebdriver.Chrome()asdriver:driver.get(https://www.w3school.com.cn/tiy/t.asp?feg_html_form_radio)​ ​# 2.name/id的方式# 直接通过name/id切换driver.switch_to.frame(iframeResult)​ ​# 找到female单选框femaledriver.find_element_by_xpath(//input[valuefemale])print(female)3.通过iframe在页面中的索引进行切换从0开始3.1.通过页面iframe的索引进行切换importtime ​fromseleniumimportwebdriver ​# 使用with语句进行上下文管理# 异常时也会关闭游览器驱动withwebdriver.Chrome()asdriver:driver.get(https://www.w3school.com.cn/tiy/t.asp?feg_html_form_radio)​# 3.使用索引索引从0开始# 切换到第二个iframetime.sleep(1)driver.switch_to.frame(1)​# 找到female单选框femaledriver.find_element_by_xpath(//input[valuefemale])print(female)4.离开iframe4.1.离开iframe切换到默认window# 切回到默认内容driver.switch_to.default_content()三.下拉框切换1.通过option操作importtime ​fromseleniumimportwebdriverfromselenium.webdriver.support.uiimportSelect ​# 使用with语句进行上下文管理# 异常时也会关闭游览器驱动withwebdriver.Chrome()asdriver:driver.get(https://www.w3school.com.cn/tiy/t.asp?feg_html_elements_select)​# 切换iframeiframedriver.find_element_by_id(iframeResult)driver.switch_to.frame(iframe)​# 找到audi选项# 1.通过option直接操作optiondriver.find_element_by_xpath(//option[valueaudi])option.click()time.sleep(3)2.通过select类 操作2.1.select.select_by_index(index)参数index表示的option索引2.2.select.select_by_value(value)参数value表示的是option元属中value的属性值2.3.select.select_by_visible_text(visible_text)参数visible_text表示的是option的文本内容importtime ​fromseleniumimportwebdriverfromselenium.webdriver.support.uiimportSelect ​# 使用with语句进行上下文管理# 异常时也会关闭游览器驱动withwebdriver.Chrome()asdriver:driver.get(https://www.w3school.com.cn/tiy/t.asp?feg_html_elements_select)​# 切换iframeiframedriver.find_element_by_id(iframeResult)driver.switch_to.frame(iframe)​# 2.通过select类操作# 找到selectselectSelect(driver.find_element_by_xpath(//select[namecars]))# 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)