第三: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?f=eg_html_form_radio')# 切换iframe# 1.webelement的方式# 先获取到iframeiframe=driver.find_element_by_id('iframeResult')# 再切换到driver.switch_to.frame(iframe)# 找到female单选框female=driver.find_element_by_xpath('//input[@value="female"]')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?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)3.通过iframe在页面中的索引进行切换(从0开始)3.1.通过页面iframe的索引进行切换importtime fromseleniumimportwebdriver # 使用with语句进行上下文管理# 异常时也会关闭游览器驱动withwebdriver.Chrome()asdriver:driver.get('https://www.w3school.com.cn/tiy/t.asp?f=eg_html_form_radio')# 3.使用索引,索引从0开始# 切换到第二个iframetime.sleep(1)driver.switch_to.frame(1)# 找到female单选框female=driver.find_element_by_xpath('//input[@value="female"]')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?f=eg_html_elements_select')# 切换iframeiframe=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.通过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?f=eg_html_elements_select')# 切换iframeiframe=driver.find_element_by_id('iframeResult')driver.switch_to.frame(iframe)# 2.通过select类操作# 找到selectselect=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)