当前位置: 首页 > 后端技术 > PHP

[分享]python+selenium方法

时间:2023-03-30 00:35:25 PHP

一、selenium定位方法一、WebDriver8种基本元素定位方法1)find_element_by_id()根据id属性定位2)find_element_by_name()根据name元素定位3)find_element_by_class_name()根据定位类名4)find_element_by_xpath()xpath是一种XML路径语言,可以用来确定元素在xml文档中的位置,通过元素的路径完成对元素的搜索5)find_element_by_css_selector()CSS属性定位可以更灵活的选择控件的任意属性,定位方式会比xpath更快6)find_element_by_tag_name()根据标签名定位7)find_element_by_link_text()根据完整超链接文本定位8)find_element_by_partial_link_text()根据到部分超链接文本2、By定位by定位需要导入By类:fromselenium.webdriver.common.by导入By`find_element(By.ID,"")find_element(By.NAME,"")find_element(By.CLASS_NAME,"")find_element(By.TAG_NAME,"")find_element(By.LINK_TEXT,u"")find_element(By.PARTIAL_LINK_TEXT,u"")find_element(By.XPATH,"")find_element(By.CSS_SELECTOR,"")`*1*2*3*4*5*6*7*83.元素复数定位八基本定位方法都有对应的复数形式`id复数定位??find_elements_by_id()name复数定位find_elements_by_name()class复数定位find_elements_by_class_name()tag复数定位find_elements_by_tag_name()link复合number定位find_elements_by_link_text()partial_link复数定位find_elements_by_partial_link_text()xpath复数定位find_elements_by_xpath()css复数定位find_elements_by_css_selector()`*1*2*3*4*5*6*7*84、JS的5种定位方式`id定位:document.getElementById()name定位:document.getElementsByName()tag定位:document.getElementsByTagName()class定位:document.getElementsByClassName()css定位:document.querySelectorAll()`*1*2*3*4*5二、其他selenium操作1.常用库导入1)fromseleniumimportwebdriverimportwebdrivermodule2)fromselenium.webdriverimportActionChains导入动作链类,动作链可以存储鼠标动作,一起执行3)fromselenium.webdriver.common.keyimportKey键盘操作使用Keys类,一般配合send_keys使用4)fromselenium.webdriver.support.selectimportSelecto下拉框的操作由Select类处理5)fromselenium.webdriver.common.byimportByfromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasEC显示等待类2.基本操作1)浏览器相关操作创建浏览器对象  driver=webdriver.xxx()最大化窗口    maximize_window()获取浏览器大小  get_window_size()设置浏览器大小  set_window_size()获取浏览器位置  get_window_position()设置浏览器位置  set_window_position(x,y)关闭当前标签/窗口 close()关闭所有标签/窗口 quit()2)页面相关操作请求某个url      driver.get(url)刷新页面操作refresh()返回上一页   back()前进到下一页   forward()获取当前访问的页面url  current_url获取当前浏览器标题title保存图片       get_screenshot_as_png()/get_screenshot_as_file(file)网页源码       page_source3、元素操作点击操作    element.click()清空输入框   element.clear()输入框输入数据 element.send_keys(data)获取文本内容(开始标签和结束标签之间的内容)  element.text获取属性值(获取element元素的value属性的值)  element.get_attribute(value)4.鼠标键盘操作鼠标操作需要导入类,看第一部分,然后创建对象ActionChains(driver),键盘操作导入类mouserightclickel=driver.find_element_by_xxx(value)context_click(el)mousedoubleclickel=driver.find_element_by_xxx(值)ActionChains(驱动程序)。double_click(el).perform()mouseoverel=driver.find_element_by_xxx(value)ActionChains(driver).move_to_element(el).perform()常用键盘操作send_keys(Keys.BACK_SPACE)删除键(BackSpace)send_keys(Keys.SPACE)空格键(Space)send_keys(Keys.TAB)Tab(制表符)send_keys(Keys.ESCAPE)Return(Esc)send_keys(Keys.ENTER)回车(Enter)send_keys(Keys.CONTROL,'a')全选(Ctrl+A)send_keys(Keys.CONTROL,'c')复制(Ctrl+C)send_keys(Keys.CONTROL,'x')剪切(Ctrl+X)send_keys(Keys.CONTROL,'v')粘贴(Ctrl+V)5.弹出框操作进入弹出框  driver.switch_to.alert()接收警告accept()关闭警告     dismiss()向警告框发送文本 send_keys(data)6.下拉框操作将定位到的下拉框元素传入Select类  selobj=Select(element)按索引选择,和index索引从0开始       select_by_index()selectbyvalue(option标签的一个属性值)  select_by_value()selectbytext(下拉框的值)  select_by_visible_text()查看所有选中  all_selected_options查看第一个Selected  first_selected_option查看是否多选  is_multiple查看选项元素列表  options取消选中  deselect_by_index()/deselect_by_value()/deselect_by_index()/deselect_by_value()/deselect_by.滚动条操作js="window.scrollTo(x,y)"x为水平拖动距离,y为垂直拖动示例driver.execute_script(js)js=“varq=document.documentElement.scrollTop=n”n是从上到下滚动的示例驱动程序。execute_script(js)8.Cookies操作获取所有cookies  get_cookies()获取key对应的值  get_cookie(key)设置cookies  add_cookie(cookie_dict)删除指定名称的cookie  delete_cookie(name)删除所有cookie  delete_all_cookies()9、多标签/多窗口、多表单/多帧切换多表单/多帧切换直接使用id值切换成表单  driver.switch_to.frame(value)定位到表单元素,然后切换到el=driver.find_element_by_xxx(value)driver.switch_to.frame(el)跳回到最外层页面  driver.switch_to.default_content()跳回上一页  driver.switch_to。parent_frame()多标签/多窗口切换获取所有窗口的句柄  handles=driver.window_handlers通过窗口句柄进入的窗口  driver.switch_to.window(handles[n])接口测试工具可以使用国内的接口测试和接口文档生成工具:apipost