<menuitem id="gc5xj"><track id="gc5xj"></track></menuitem>
  • <dl id="gc5xj"><ins id="gc5xj"></ins></dl>
              1. <dl id="gc5xj"></dl>

                <dl id="gc5xj"></dl>

                <li id="gc5xj"><ins id="gc5xj"></ins></li>

                1. <output id="gc5xj"></output><dl id="gc5xj"><ins id="gc5xj"></ins></dl>
                    <dl id="gc5xj"></dl>

                        <dl id="gc5xj"><ins id="gc5xj"></ins></dl>

                        <dl id="gc5xj"></dl>

                          分享一个神器¡ª¡ªSelenium 自动化测试工具

                          发表于£º2019-3-25 17:24  作者£º今朝   来源£º思否

                          字体£º | 上一篇 | 下一篇 |我要投稿 | 推荐标签£º Selenium 自动化测试工具

                          ¡¡¡¡最近写项目的时候£¬用到了Selenium£¬一个 Web 端的自动化测试工具£¬直接运行在浏览器中£¬用来模拟用户操作¡£
                          ¡¡¡¡Selenium 不仅仅可以用作自动化测试£¬还有很多种玩法£¬比如 Python 的爬虫£¬实现某商品的秒杀£¬甚至是页游外挂脚本£¬只要是基于浏览器操作£¬只有你想不到£¬没有 Selenium 做不到£¬就是这么强大£¡
                          ¡¡¡¡直奔主题£¬我们来感受一下 Selenium¡£
                          ¡¡¡¡安装
                          ¡¡¡¡Python 的安装就不再科普£¬自行百度¡£
                          ¡¡¡¡通过 pip 命令安装 Selenium
                           pip install selenium
                          ¡¡¡¡安装浏览器驱动
                          ¡¡¡¡Selenium 支持的浏览器很多£¬Firefox¡¢Chrome¡¢IE¡¢Opera 等等¡£
                          ¡¡¡¡作为一个程序员£¬想必大多常用的浏览器都是 Chrome£¬我的电脑是 Mac£¬安装 Chrome 浏览器驱动£¬直接执行 brew cask install chromedriver 即可¡£
                          ¡¡¡¡更多 Selenium 浏览器驱动下载£¬请点击¡£
                          ¡¡¡¡示例
                          ¡¡¡¡先来一段简单的代码¡£
                             from selenium import webdriver
                          ¡¡¡¡from selenium.webdriver.common.keys import Keys
                          ¡¡¡¡browser = webdriver.Chrome()
                          ¡¡¡¡browser.get('https://www.baidu.com')
                          ¡¡¡¡browser.find_element_by_id('kw').send_keys('php')
                          ¡¡¡¡browser.find_element_by_id('kw').send_keys(Keys.ENTER)
                          ¡¡¡¡运行这段代码£¬你会发现自动打开 Chrome£¬并访问了百度£¬在输入框输入了 php£¬紧接着跳转到了搜索的结果页¡£
                          ¡¡¡¡常用方法
                          ¡¡¡¡1. 页面元素定位
                          ¡¡¡¡Selenium 常用的元素定位方法
                          ¡¡¡¡find_element_by_id()
                          ¡¡¡¡find_element_by_class_name()
                          ¡¡¡¡find_element_by_tag_name()
                          ¡¡¡¡find_element_by_css_selector()
                          ¡¡¡¡find_element_by_tag_name()
                          ¡¡¡¡比如百度页面的 HTML£º
                          ¡¡¡¡<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
                          ¡¡¡¡我们可以这样定位
                             element = driver.find_element_by_id('kw')
                          ¡¡¡¡element = driver.find_element_by_class_name('s_ipt')
                          ¡¡¡¡element = driver.find_element_by_css_selector('.s_ipt')¡¡¡¡获取元素之后£¬就是针?#26434;?#20803;素的操作了£¬简单可以划分两类操作£¬鼠标事件和键盘事件等等¡£
                          ¡¡¡¡2. 鼠标操作
                             element.click()  单击£»
                          ¡¡¡¡element.context_click() ?#19968;ö?/div>
                          ¡¡¡¡element.double_click() 双击£»
                          ¡¡¡¡element.drag_and_drop() 拖动£»
                          ¡¡¡¡element.move_to_element() 鼠标悬停
                          ¡¡¡¡3. 输入和键盘事件
                          ¡¡¡¡输入文本£º
                           element.send_keys("Hello world")
                          ¡¡¡¡键盘操作£º
                             element.send_keys(Keys.ENTER) 回车
                          ¡¡¡¡element.send_keys(Keys.CONTROL,¡®a¡¯) 全选£¨Ctrl+A£©
                          ¡¡¡¡element.send_keys(Keys.CONTROL,¡®c¡¯) 复制£¨Ctrl+C£©
                          ¡¡¡¡element.send_keys(Keys.CONTROL,¡®x¡¯) 剪切£¨Ctrl+X£©
                          ¡¡¡¡element.send_keys(Keys.CONTROL,¡®v¡¯) ?#31243;ù£¨Ctrl+V£©
                          ¡¡¡¡element.send_keys(Keys.F1) 键盘 F1
                          ¡¡¡¡¡­¡­ 等等
                          ¡¡¡¡窗口切换
                           driver.switch_to_window("windowName")
                          ¡¡¡¡
                             # 获取所?#20889;?#24320;窗口句柄
                          ¡¡¡¡all_handles = driver.window_handles
                          ¡¡¡¡# 获取当前窗口句柄
                          ¡¡¡¡current_windows = driver.current_window_handle
                          ¡¡¡¡页面等待
                          ¡¡¡¡现在很多项目都是前后端分离的£¬HTML 动态渲染£¬如果我们打开某页面£¬直接选取元素操作£¬就会抛出异常£¬所以设置页面等待是很有必要的¡£
                          ¡¡¡¡等待分为两种类?#20572;?#26174;式等待和隐式等待¡£
                          ¡¡¡¡显式等待£º 针对页面的某一元素£¬每隔一段时间检测一次当前页面元素是否存在£¬如果超过设置时间检测不到则抛出异常
                             from selenium import webdriver
                          ¡¡¡¡from selenium.webdriver.common.by import By
                          ¡¡¡¡from selenium.webdriver.support.ui import WebDriverWait
                          ¡¡¡¡from selenium.webdriver.support import expected_conditions as EC
                          ¡¡¡¡driver = webdriver.Firefox()
                          ¡¡¡¡driver.get("http://www.baidu.com")
                          ¡¡¡¡element = WebDriverWait(driver, 5, 0.5).until(
                          ¡¡¡¡EC.presence_of_element_located((By.ID, "kw"))
                          ¡¡¡¡)
                          ¡¡¡¡element.send_keys('selenium')
                          ¡¡¡¡driver.quit()
                          ¡¡¡¡隐式等待£º并不针对页面上的某一元素进行等待£¬脚本执行到某个元素定位时£¬如果元素可以定位£¬则继续执行£»如果元素定位不到£¬则它将以轮询的方式不断地判断元素是否被定位£¬直到超出设置时长£¬抛出异常¡£
                             # 设置隐式等待为10秒
                          ¡¡¡¡driver.implicitly_wait(10)
                          ¡¡¡¡Selenium 还有更多的操作£¬比如设置浏览器 cookie¡¢文件上传¡¢窗口截图等待£¬这里就不多介绍了£¬?#34892;?#36259;的话£¬大家可以去看看相关¡£

                                上文内容不用于商业目的£¬如涉及知识产权问题£¬请权利人联系博为峰小编(021-64471599-8017)£¬我们将立即处理¡£

                          ¡¾调查报告¡¿你以为的测试行业现状£¬其实是这样的£¡

                          评 论

                          论坛新帖

                          顶部 底部


                          建议使用IE 6.0以上浏览器£¬800×600以上分辨率£¬法律顾问£º上海瀛东律师事务所 张楠律师
                          版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2019, 沪ICP备05003035号
                          ?#31471;?#21450;意见反馈£º[email protected]; 业务联系£º[email protected] 021-64471599-8017

                          沪公网安备 31010102002173号

                          51Testing官方微信

                          51Testing官方微博

                          扫一扫 测试知?#24230;?#30693;道

                          <menuitem id="gc5xj"><track id="gc5xj"></track></menuitem>
                        1. <dl id="gc5xj"><ins id="gc5xj"></ins></dl>
                                    1. <dl id="gc5xj"></dl>

                                      <dl id="gc5xj"></dl>

                                      <li id="gc5xj"><ins id="gc5xj"></ins></li>

                                      1. <output id="gc5xj"></output><dl id="gc5xj"><ins id="gc5xj"></ins></dl>
                                          <dl id="gc5xj"></dl>

                                              <dl id="gc5xj"><ins id="gc5xj"></ins></dl>

                                              <dl id="gc5xj"></dl>

                                                ºÚÁú½­¿ìÀÖ10·ÖÈí¼þ
                                                <menuitem id="gc5xj"><track id="gc5xj"></track></menuitem>
                                              1. <dl id="gc5xj"><ins id="gc5xj"></ins></dl>
                                                          1. <dl id="gc5xj"></dl>

                                                            <dl id="gc5xj"></dl>

                                                            <li id="gc5xj"><ins id="gc5xj"></ins></li>

                                                            1. <output id="gc5xj"></output><dl id="gc5xj"><ins id="gc5xj"></ins></dl>
                                                                <dl id="gc5xj"></dl>

                                                                    <dl id="gc5xj"><ins id="gc5xj"></ins></dl>

                                                                    <dl id="gc5xj"></dl>

                                                                      <menuitem id="gc5xj"><track id="gc5xj"></track></menuitem>
                                                                    1. <dl id="gc5xj"><ins id="gc5xj"></ins></dl>
                                                                                1. <dl id="gc5xj"></dl>

                                                                                  <dl id="gc5xj"></dl>

                                                                                  <li id="gc5xj"><ins id="gc5xj"></ins></li>

                                                                                  1. <output id="gc5xj"></output><dl id="gc5xj"><ins id="gc5xj"></ins></dl>
                                                                                      <dl id="gc5xj"></dl>

                                                                                          <dl id="gc5xj"><ins id="gc5xj"></ins></dl>

                                                                                          <dl id="gc5xj"></dl>