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() # 获取弹窗文本内容
本文来自博客园,作者:执剑之心,转载请注明原文链接:https://www.cnblogs.com/ldzcy/p/15117478.html
浙公网安备 33010602011771号