Selenium3.1常用方法说明

开篇简要:本文简单介绍一些常用的Selenium3.1方法

完成时间:2021-08-10


一、浏览器事件

 1 import time
 2 
 3 from selenium import webdriver
 4 from selenium.webdriver.support.wait import WebDriverWait
 5 from selenium.webdriver.support import expected_conditions as EC
 6 from selenium.webdriver.common.by import By
 7 driver=webdriver.Firefox()  # 其他浏览器Chrome(),Ie()
 8 driver.get("http://www.baidu.com")  # 打开浏览器的某个网址
 9 driver.maximize_window()    # 将浏览器最大化显示
10 driver.set_window_size(480, 800)    # 设置浏览器宽480、高800显示"
11 driver.back()   # 后退
12 driver.forward()    # 前进
13 driver.close()  # 关闭chrome
14 driver.quit()   # 退出chrome
15 time.sleep(10)  # 强制等待
16 driver.implicitly_wait(30)  # 隐性等待,等待整个页面加载完成
17 WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.ID,"bd")))  # 显性等待,页面元素出现就立刻进行下一步

 

二、定位方法介绍

 1 # 8种常见元素定位方法
 2 driver.find_elements_by_name('name')  # name属性定位
 3 driver.find_element_by_class_name('class_name')  # class属性定位
 4 driver.find_elements_by_tag_name('tag_name')  # tag标签定位
 5 driver.find_element_by_link_text('link_text')  # 完整文字链接定位
 6 driver.find_element_by_partial_link_text('partial_text')  # 部分文字链接定位
 7 driver.find_elements_by_id('id')  # id属性定位
 8 driver.find_element_by_xpath('xpath')  # xpath定位
 9 driver.find_elements_by_css_selector('css')  # css定位
10 # 通过js来定位,,,,未实践 11 # id定位:document.getElementById() 12 # name定位:document.getElementsByName() 13 # tag 定位:document.getElementsByTagName() 14 # class 定位:document.getElementsByClassName() 15 # css 定位:document.querySelectorAll() 16 search_js = "document.getElementsByName('wd')[0].value='selenium';" # 通过name定位,然后赋值“selenium” 17 search_js2 = "document.querySelectorAll('.s_ipt')[0].value='selenium';" # 通过css定位,然后赋值“selenium” 18 button_js = "document.getElementById('su').click();" # 通过id定位,然后执行单击操作 19 button_js2 = "document.getElementsByClassName('s_btn')[0].click()" # 通过className定位,然后执行单击操作 20 driver.execute_script(search_js) # 执行上面脚本

 

三、下拉单事件

 1 from selenium import webdriver
 2 from selenium.webdriver.support.ui import Select
 3 driver = webdriver.Firefox()
 4 # select模块
 5 target=driver.find_elements_by_xpath('xpth')  # 定位元素
 6 targets=Select(target)  # 获取该元素下的所有option元素
 7 targets.select_by_index('1')  # 下标获取指定元素
 8 targets.select_by_value('name')  # value值获取指定元素
 9 targets.select_by_visible_text('新闻')  # 页面可见文字获取指定元素
10 
11 targets.deselect_all()  # 取消全部的已选择项
12 targets.deselect_by_index('1')  # 取消已选中的索引项
13 targets.deselect_by_value('name')  # 取消已选中的value值
14 targets.deselect_by_visible_text('xinwen')  # 取消已选中的文本值

 

四、鼠标和键盘

 1 from selenium import webdriver
 2 from selenium.webdriver.common.keys import Keys
 3 from selenium.webdriver.common.action_chains import ActionChains
 4 
 5 driver = webdriver.Firefox()
 6 # 直接操作
 7 test = driver.find_element_by_id("id")  # 定位到某元素
 8 test.clear()  # 清除输入框的默认内容
 9 test.size()  # 获取输入框高度
10 test.send_keys("username")  # 在输入框输入值
11 test.click()  # 定位元素如果是按钮,那现在是单击
12 test.submit()  # 定位元素如果是登录按钮之类表单确认,那现在就是提交操作
13 test.text()  # 获取文本内容
14 test.get_attribute('name')  # 获取元素name属性的值
15 test.is_displayed()  # 元素出现就输出true
16 test.is_enabled()  # 判断元素是否可以进行点击、输入之类的操作
17 test.is_selected()  # 判断元素是否被选中
18 # 鼠标事件
19 right = driver.find_element_by_xpath("xx")
20 ActionChains(driver).context_click(right).perform()  # 对定位到的元素执行鼠标右键操作
21 ActionChains(driver).double_click(right).perform()  # 对定位到的元素执行鼠标双击操作
22 ActionChains(driver).move_to_element(right).perform()  # 对定位到的元素执行鼠标移动到上面的操作
23 ActionChains(driver).click_and_hold(right).perform()  # 对定位到的元素执行鼠标左键按下的操作
24 element = driver.find_element_by_name("xxx")  # 定位元素的原位置
25 target = driver.find_element_by_name("xxx")  # 定位元素要移动到的目标位置
26 ActionChains(driver).drag_and_drop(element, target).perform()  # 执行元素的移动操作
27 # 键盘事件
28 driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)  # 回退删格键
29 driver.find_element_by_id("kw").send_keys(Keys.SPACE)  # 输入空格键+“教程”
30 driver.find_element_by_id("kw").send_keys(u"教程")
31 driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'x')  # ctrl+x 剪切输入框内容

 

五、多窗口事件

1 driver = webdriver.Firefox()
2 # 多窗口事件
3 nowhandle=driver.current_window_handle  # 获取当前窗口
4 driver.find_element_by_name("tj_reg").click()  # 打开并去往注册新窗口
5 allhandles=driver.window_handles  # 获取所有窗口
6 driver.switch_to.window(nowhandle)  # 回到原来的窗口
7 driver.close()  # 关闭当前窗口但不退出浏览器

 

六、层级定位

1 # 层级定位
2 driver.switch_to.frame('frame11')  # 先定位到某frame
3 driver.switch_to.parent_frame('frame1')  # 定位到上级frame
4 driver.switch_to.default_content('frame0')  # 定位最开始的frame

 

七、弹窗事件

1 # 弹窗事件
2 # 现在有些弹窗事件,未弹窗时代码处于隐藏状态,这种直接用最原始定位方法可以解决
3 # alert弹窗
4 ale=driver.switch_to.alert  # 焦点转到alert弹窗上
5 ale.accept()  # 确认弹窗
6 ale.dismiss()  # 取消弹窗
7 ale.text()  # 获取弹窗文本内容

 

posted on 2021-08-10 16:08  执剑之心  阅读(124)  评论(0)    收藏  举报