Selenium学习之==>Switch与SelectApi接口详解
2021-03-27 23:28
标签:下拉菜单 xpath get 定位 elements font drive top 属性 Switch 我们在UI自动化测试时,总会出现新建一个tab页面、弹出一个浏览器级别的弹框或者是出现一个iframe标签,这时我们用WebDriver提供的Api接口就无法处理这些情况了。需要用到Selenium单独提供的模块switch_to模块 SwitchToWindows 例子: SwitchToFrame 例子: SwitchToAlert 例子: Select 在UI自动化测试过程中,经常会遇到一些下拉框,如果我们基于Webdriver操作的话就需要click两次,而且很容易出现问题,实际上Selenium给我们提供了专门的Select(下拉框处理模块)。 例子: 如果一个标签下还有子集,可以继续在这个标签小查找,如下: Switch与SelectApi接口详解,soscw.com" target="_blank">Selenium学习之==>Switch与SelectApi接口详解 标签:下拉菜单 xpath get 定位 elements font drive top 属性 原文地址:https://www.cnblogs.com/L-Test/p/9307553.html1 handles = driver.window_handles
2
3 # SwitchToWindows接受浏览器TAB的句柄
4 driver.switch_to.window(handles[1])
1 # 浏览器句柄及指针切换
2 print(driver.window_handles) # 获取所有打开server的浏览器句柄,返回的是一个list
3 bl = driver.find_element_by_css_selector(‘[href="http://www.soscw.com/new-index/"]‘)
4 bl.click() # 点击连接打开一个新的页面
5 print(driver.window_handles) # 再次获取所有打开server的浏览器句柄
6 handes = driver.window_handles
7 driver.switch_to.window(handes[1]) # 切换浏览器句柄到新打开的这个页面
8 cl = driver.find_element_by_css_selector(‘#newtag‘)
9 cl.send_keys(‘AAAA‘)
10 driver.close() # 关闭当前指针指向句柄的页面
11 driver.switch_to.window(handes[0]) # 手动将浏览器指针切换回之前的页面
12 driver.find_element_by_css_selector(‘#i1‘).send_keys(‘EEEE‘)
13 driver.quit() # 关闭所有页面
1 # SwitchToFrame支持id、name、frame的element
2
3 # 接受定位到的iframe的Element,这样就可以通过任意一种定位方式进行定位了
4 frameElement = driver.find_element_by_name(‘top-frame‘)
5 driver.switch_to.frame(frameElement)
6
7 # 通过fame的name、id属性定位
8 driver.switch_to.frame(‘top-frame‘)
9
10 # 当存在多层iframe嵌套时,需要一层一层的切换查找,否则将无法找到
11 driver.switch_to.frame(‘top-frame‘)
12 driver.switch_to.frame(‘baidu-frame‘)
13
14 # 跳转到最外层的页面
15 driver.switch_to.default_content()
16
17 # 多层Iframe时,跳转到上一层的iframe中
18 driver.switch_to.parent_frame()
1 # 多层iframe切换,需要一层一层进入,但是能从任意一层切换到最外层
2 # 切换到top-frame
3 driver.switch_to.frame(‘top-frame‘)
4 import time
5 time.sleep(1)
6 # 输入newtag文案
7 driver.find_element_by_css_selector(‘#newtag‘).send_keys(‘XXXX‘)
8 # 切换到baidu-frame
9 driver.switch_to.frame(‘baidu-frame‘)
10 time.sleep(1)
11 # 输入kw文案
12 driver.find_element_by_css_selector(‘#kw‘).send_keys(‘YYYY‘)
13 # 返回上一层frame,即top-frame
14 driver.switch_to.parent_frame()
15 # 清空top-frame的输入
16 driver.find_element_by_css_selector(‘#newtag‘).clear()
17 # 再切换到baidu-frame
18 driver.switch_to.frame(‘baidu-frame‘)
19 # 再清空baidu-frame的输入
20 driver.find_element_by_css_selector(‘#kw‘).clear()
21 # 切换到最外层frame
22 driver.switch_to.default_content()
23 # 输入i1文案
24 driver.find_element_by_css_selector(‘#i1‘).send_keys(‘NNNN‘)
1 # alert 实际上也是Selenium的一个模块
2 from selenium.webdriver.common.alert import Alert
3
4 # 也可以通过Webdriver的switch_to来调用
5
6 # 点击确认按钮
7 driver.switch_to.alert.accept()
8
9 # 如果是确认弹框,相当于点击需要和X按钮
10 driver.switch_to.alert.dismiss()
11
12
13 # 如果alert上有文本框时,可以输入文字。(注: 没遇到过)
14 driver.switch_to.alert.send_keys()
15
16 # 返回Alert上面的文本内容
17 text = driver.switch_to.alert.text
1 # 弹框处理
2 driver.find_element_by_css_selector(‘#confirm‘).click() # 点击按钮,弹出弹框
3 print(driver.switch_to.alert.text) # 打印弹框返回的文本文字
4 driver.switch_to.alert.accept() # 确认
5 driver.switch_to.alert.dismiss() # 取消
1 # 通过select选项的索引来定位选择对应选项(从0开始计数)
2 Select(s).select_by_index(5)
3
4 # 通过选项的value属性值来定位
5 Select(s).select_by_value(‘2‘)
6
7 # 通过选项的文本内容来定位
8 Select(s).select_by_visible_text(‘牡丹江‘)
9
10 # 返回第一个选中的optionElement对象
11 Select(s).first_selected_option
12
13 # 返回所有选中的optionElement对象
14 Select(s).all_selected_options
15
16 # 取消所有选中的option
17 Select(s).deselect_all()
18
19 # 通过option的index来取消对应的option
20 Select(s).deselect_by_index(1)
21
22 # 通过value属性,来取消对应option
23 Select(s).deselect_by_value(‘‘)
24
25 # 通过option的文本内容,取消对应的option
26 Select(s).deselect_by_visible_text(‘‘)
1 # 点击下拉菜单再点击一个值
2 from selenium.webdriver.support.select import Select
3 driver.get(‘http://ui.imdsx.cn/html/‘)
4 driver.execute_script(‘window.scrollTo(0,1500);‘)
5 select = driver.find_element_by_xpath(‘//select[1]‘)
6 # 实例化select,接收一个select标签,如果不是select标签则抛异常
7 Select(select).select_by_value(‘2‘) # 通过select标签的option中的value的值定位
8 Select(select).select_by_index(‘2‘) # 通过select标签的option中的下标定位,从0开始
1 driver.get(‘http://ui.imdsx.cn/html/‘)
2 driver.execute_script(‘window.scrollTo(0,1500);‘)
3 select = driver.find_element_by_xpath(‘//select[1]‘)
4 # 获取select标签下所有的option的元素
5 options = select.find_elements_by_tag_name(‘option‘)
6 for opt in options:
7 print(opt.get_attribute(‘value‘)) # 循环获取select(‘//select[1]‘)标签下的option的value属性
8 print(opt.get_attribute(‘index‘)) # 循环获取select(‘//select[1]‘)标签下的option的下标
文章标题:Selenium学习之==>Switch与SelectApi接口详解
文章链接:http://soscw.com/index.php/essay/68798.html