Selenium 常用函数总结

打印 上一主题 下一主题

主题 846|帖子 846|积分 2538

Seleninum作为自动化测试的工具,自然是提供了很多自动化操作的函数,
下面列举下个人觉得比较常用的函数,更多可见官方文档:
官方API文档:
http://seleniumhq.github.io/selenium/docs/api/py/api.html
1) 定位元素

  1. find_element_by_class_name:根据class定位
  2. find_element_by_css_selector:根据css定位
  3. find_element_by_id:根据id定位
  4. find_element_by_link_text:根据链接的文本来定位
  5. find_element_by_name:根据节点名定位
  6. find_element_by_partial_link_text:根据链接的文本来定位,只要包含在整个文本中即可
  7. find_element_by_tag_name:通过tag定位
  8. find_element_by_xpath:使用Xpath进行定位
复制代码
PS:把element改为elements会定位所有符合条件的元素,返回一个List
好比:find_elements_by_class_name
2) 鼠标动作

偶然需要在页面上模仿鼠标操作,好比:单击,双击,右键,按住,拖拽等
可以导入ActionChains类:selenium.webdriver.common.action_chains.ActionChains
使用ActionChains(driver).XXX调用对应节点的举动
  1. click(element):单击某个节点;
  2. click_and_hold(element):单击某个节点并按住不放;
  3. context_click(element):右键单击某个节点;
  4. double_click(element):双击某个节点;
  5. drag_and_drop(source,target):按住某个节点拖拽到另一个节点;
  6. drag_and_drop_by_offset(source, xoffset, yoffset):按住节点按偏移拖拽
  7. key_down:按下特殊键,只能用(Control, Alt and Shift),比如Ctrl+C
  8. ActionChains(driver).key_down(Keys.CONTROL).send_keys(‘c’).key_up(Keys.CONTROL).perform();
  9. key_up:释放特殊键;
  10. move_by_offset(xoffset, yoffset):按偏移移动鼠标;
  11. move_to_element(element):鼠标移动到某个节点的位置;
  12. move_to_element_with_offset(element, xoffset, yoffset):鼠标移到某个节点并偏移;
  13. pause(second):暂停所有的输入多少秒;
  14. perform():执行操作,可以设置多个操作,调用perform()才会执行;
  15. release():释放鼠标按钮
  16. reset_actions:重置操作
  17. send_keys(keys_to_send):模拟按键,比如输入框节点.send_keys(Keys.CONTROL,’a’)
  18. 全选输入框内容,输入框节点.send_keys(Keys.CONTROL,’x’)剪切,模拟回退:
  19. 节点.send_keys(keys.RETURN);或者直接设置输入框内容:输入框节点.send_keys(‘xxx’);
  20. send_keys_to_element(element, *keys_to_send):和send_keys类似;
复制代码
3) 弹窗

对应类:selenium.webdriver.common.alert.Alert
如果你触发了某个时间,弹出了对话框,可以调用下述方法得到对话框:
alert = driver.switch_to_alert(),然后可以调用下述方法:
  1. accept():确定
  2. dismiss():关闭对话框
  3. send_keys():传入值
  4. text():获得对话框文本
复制代码
4)页面进步,退却,切换

  1. driver.switch_to_window(driver.window_handles[1])#切换窗口
  2. driver.forward() #前进
  3. driver.back() # 后退
  4. #打印当前url
  5. print(driver.current_url)
复制代码
5) 页面截图

  1. driver.save_screenshot(“截图.png”)
复制代码
6)设置署理

  1. from selenium import webdriver
  2. options.add_argument("--proxy-server=http://101.37.118.54:8888")
  3. driver_path = r'D:/chromedriver/chromedriver.exe'
  4. driver = webdriver.Chrome(executable_path=driver_path,options=options)
  5. driver.get("http://httpbin.org/ip")
复制代码
7) 页面期待

如今的网页越来越多采用了 Ajax技术,如许步伐便不能确定何时某个元素完全
加载出来了。如果实际页面期待时间过长导致某个dom元素还没出来,但是你的
代码直接使用了这个WebElement,那么就会抛出NullPointer的异常。
为了克制这种元素定位困难而且会进步产生 ElementNotVisibleException的概率。
以是 Selenium 提供了两种期待方式,一种是隐式期待,一种是显式期待。
显式期待:
显式期待指定某个条件,然后设置最长期待时间。如果在这个时间还没有
找到元素,那么便会抛出异常了。
  1. from selenium import webdriver
  2. from selenium.webdriver.common.by import By
  3. #WebDriverWait 库,负责循环等待
  4. from selenium.webdriver.support.ui import WebDriverWait
  5. #expected_conditions 类,负责条件出发
  6. from selenium.webdriver.support import expected_conditions as EC
  7. driver = webdriver.PhantomJS()
  8. driver.get("http://www.xxxxx.com/loading")
  9. try:
  10.     # 每隔10秒查找页面元素 id="myDynamicElement",直到出现则返回
  11.     element = WebDriverWait(driver, 10).until(
  12.         EC.presence_of_element_located((By.ID, "myDynamicElement"))
  13.     )
  14. finally:
  15.     driver.quit()
复制代码
如果不写参数,步伐默认会 0.5s 调用一次来查看元素是否已经生成,
如果本来元素就是存在的,那么会立即返回。
下面是一些内置的期待条件,你可以直接调用这些条件,而不消自己
写某些期待条件了。
  1. title_is
  2. title_contains
  3. presence_of_element_located
  4. visibility_of_element_located
  5. visibility_of
  6. presence_of_all_elements_located
  7. text_to_be_present_in_element
  8. text_to_be_present_in_element_value
  9. frame_to_be_available_and_switch_to_it
  10. invisibility_of_element_located
  11. element_to_be_clickable – it is Displayed and Enabled.
  12. staleness_of
  13. element_to_be_selected
  14. element_located_to_be_selected
  15. element_selection_state_to_be
  16. element_located_selection_state_to_be
  17. alert_is_present
复制代码
隐式期待:
隐式期待比较简单,就是简单地设置一个期待时间,单位为秒。
  1. from selenium import webdriver
  2. driver = webdriver.PhantomJS()
  3. driver.implicitly_wait(10) # seconds
  4. driver.get("http://www.xxxxx.com/loading")
  5. myDynamicElement = driver.find_element_by_id("myDynamicElement")
复制代码
当然如果不设置,默认期待时间为0。
8).执行JS语句

  1. driver.execute_script(js语句)
  2. #比如滚动到底部:
  3. js = document.body.scrollTop=10000
  4. driver.execute_script(js)
复制代码
9).补充

  1.  # 找到“嵌套”的iframe
  2. iframe = driver.find_element_by_xpath('//iframe')    
  3.  # 切换到iframe
  4. driver.switch_to.frame(iframe)     # 切换到iframe
  5. 获取元素标签的内容(文本信息):
  6. get_attribute(‘textContent’)
  7. 获取元素内的全部HTML:
  8. get_attribute('innerHTML')
  9. 获取包含选中元素的HTML:
  10. get_attribute('outerHTML')
复制代码

资源分享【这份资料必须领取~
下方这份完备的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【包管100%免费】




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

傲渊山岳

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表