精华内容
下载资源
问答
  • python自动化测试中,获取页面地址使用current_url()获取当前页面地址,但在原页面上点击按钮打开新页面,获取新页面地址使用current_url()获取到的地址还是原页面地址。 from selenium import webdriver import ...

    python自动化测试中,获取页面地址使用current_url()获取当前页面地址,但在原页面上点击按钮打开新页面,获取新页面地址使用current_url()获取到的地址还是原页面地址。

    from selenium import webdriver
    import time as t
    
    driver=webdriver.Chrome()
    driver.maximize_window()
    driver.implicitly_wait(30)
    driver.get('http:/www.baidu.com')
    # 跳转到新页面
    driver.find_element_by_link_text('新闻').click()
    t.sleep(3)
    print('当前浏览地址为:.{0}'.format(driver.current_url))
    driver.quit()
    

    运行结果如下:

    在这里插入图片描述

    添加定位页面代码之后再使用current_url获取地址即可。

    from selenium import webdriver
    import time as t
    
    driver=webdriver.Chrome()
    driver.maximize_window()
    driver.implicitly_wait(30)
    driver.get('http:/www.baidu.com')
    # 跳转到新页面
    driver.find_element_by_link_text('新闻').click()
    #切换当前页面标签
    driver.switch_to.window(driver.window_handles[1])
    t.sleep(3)
    print('当前浏览地址为:.{0}'.format(driver.current_url))
    driver.quit()
    

    运行结果如下:
    在这里插入图片描述

    展开全文
  • selenium web_ui自动化测试之按钮跳转

    千次阅读 2020-01-17 11:39:00
    一、web UI自动化测试 1.使用技术 python+pytest+po模式 2.测试点分析 2.1示例跳转大屏 a.点击跳转,新开窗口 b.点击按钮,是否有效 c.点击按钮跳转后,是否跳转到正确页面 2.2示例应用名称跳转 a.点击应用名称,...

    一、web UI自动化测试

    1.使用技术

    python+pytest+po模式

    2.测试点分析

    2.1示例跳转大屏

    在这里插入图片描述
    a.点击跳转,新开窗口
    b.点击按钮,是否有效
    c.点击按钮跳转后,是否跳转到正确页面

    2.2示例应用名称跳转

    在这里插入图片描述
    a.点击应用名称,当前页面跳转,不新增窗口
    b.点击应用名称,是否有效
    c.点击应用名称,是否跳转到正确页面
    d.点击应用名称,跳转显示的是否是此应用名称页面信息

    3.实现步骤

    3.1大屏跳转

     screen_btn=(By.XPATH,'//a[@href="#/ProjectIndex"]')  #元素定位
    
     def click_screen(self): #定义点击函数
            print("点击大屏按钮")
            WebDriverWait(self.driver, 20).until(EC.visibility_of_element_located(cml.screen_btn))
            self.driver.find_element(cml.screen_btn[0], cml.screen_btn[1]).click()
    
        # 测试用例--点击大屏
         def test_click_screen(self,init_loginWeb):
             logging.info("#########通用用例--点击大屏##########")
             # 1.调用登陆操作函数
             init_loginWeb[1].login(user,passwd,code)
             logging.info("登陆ok")
             # 去点击大屏
             init_loginWeb[2].click_screen()
             #断言大屏url 是否一致
             assert init_loginWeb[2].switch_screen_window() == screen_url  #正确页面url
    
    	#切换大屏窗口:判断窗口个数来验证点击大屏按钮是否成功
        #判断url 地址信息是否一致,判断是否正确
        def switch_screen_window(self):
            print("===切换大屏窗口===")
            # 获取当前窗口句柄
            cur_handle=self.driver.current_window_handle
            # 打印当前获取的窗口名称
            print(self.driver.title)
            # current_url 方法可以得到当前页面的URL
            print(self.driver.current_url)
            # 获取所有窗口句柄
            all_handles=self.driver.window_handles
            for handle in all_handles:
                if handle!=cur_handle:
                    # 切换窗口
                    self.driver.switch_to.window(handle)
                    #打印当前窗口title
                    print(self.driver.title)
                    print(self.driver.current_url)
                    screen_url=self.driver.current_url
                    # 返回主窗口
                    self.driver.switch_to.window(cur_handle)
            return screen_url
    

    3.2应用名称跳转

    safety_appName='//div[@class="cell el-tooltip"]//span'  #元素定位,值有多个,需用数组
        #定义函数-应用名称点击跳转
        def click_application_name(self,which): #which:代表元素定位到第几个数组值
            print("===首页-点击应用名称===")
            time.sleep(20) #WebDriverWait此处不适用
            self.driver.find_elements_by_xpath(IPL.application_name)[which].click()
    
    # 点击应用名称是否跳转
        def test_appname_jump(self,init_loginWeb):
            logging.info("#########首页--点击应用名称-跳转##########")
            # 1.调用登陆操作函数
            init_loginWeb[1].login(user,passwd,code)
            logging.info("登陆ok")
            # 2.点击应用名称
            init_loginWeb[3].click_application_name(0)
            # 3.断言是否跳转正确页面
            assert init_loginWeb[2].get_switch_menu_name(comm_menu[1])==cur_menu #正确页面菜单标题
    
        #获取菜单栏名称
        def get_switch_menu_name(self,menu_name):
            print("获取菜单栏名称")
            menu_locator=(cml.cur_menu[0],cml.cur_menu[1].format(menu_name))
            WebDriverWait(self.driver,20).until(EC.visibility_of_element_located(menu_locator))
            return self.driver.find_element(menu_locator[0],menu_locator[1]).text
    

    4.如何断言

    a.看页面的唯一特殊性
    b.采用最简单方便且通用灵活性的

    展开全文
  • 但是,对于现在的网站,有些采用Local Storage来缓存当前加密的登录信息,这样的话,是无法通过cookie来操作的,所以我们需要得到缓存的已登录信息来实现绕过登录跳转到需要登录才能操作的页面。 废话不多说直接上...

    1、之前在网上看到,一些配置cookie来实现绕过登录的文章。但是,对于现在的网站,有些采用Local Storage来缓存当前加密的登录信息,这样的话,是无法通过cookie来操作的,所以我们需要得到缓存的已登录信息来实现绕过登录跳转到需要登录才能操作的页面。
    废话不多说直接上代码(代码有点粗糙,大家有意见可以随时提醒我):
    首先我们需要一个发送请求,获取登录token等信息的post请求:
    SendRquest .java

    	 /**
         * 向指定 URL 发送POST方法的请求
         * 
         * @param url
         *            发送请求的 URL
         * @param param
         *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
         * @return 所代表远程资源的响应结果
         */
        public static String sendPost(String url, String param) {
            PrintWriter out = null;
            BufferedReader in = null;
            String result = "";
            try {
                URL realUrl = new URL(url);
                // 打开和URL之间的连接
                URLConnection conn = realUrl.openConnection();
                // 设置通用的请求属性
                conn.setRequestProperty("Accept", "application/json, text/plain, */*");
                conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                conn.setRequestProperty("User-Agent",
                		"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36");
                // 发送POST请求必须设置如下两行
                conn.setDoOutput(true);
                conn.setDoInput(true);
                // 获取URLConnection对象对应的输出流
                out = new PrintWriter(conn.getOutputStream());
                out.print(param);
                // flush输出流的缓冲
                out.flush();
                // 定义BufferedReader输入流来读取URL的响应
                in = new BufferedReader(
                        new InputStreamReader(conn.getInputStream(),"utf-8"));
                String line;
                while ((line = in.readLine()) != null) {
                    result += line;
                }
            } catch (Exception e) {
                System.out.println("发送 POST 请求出现异常!"+e);
                e.printStackTrace();
            }
            //使用finally块来关闭输出流、输入流
            finally{
                try{
                    if(out!=null){
                        out.close();
                    }
                    if(in!=null){
                        in.close();
                    }
                }
                catch(IOException ex){
                    ex.printStackTrace();
                }
            }
            return result;
        }    
        /*测试是否请求成功!*/
    	public static void main(String[] args) {
    		String result = SendRquest.sendPost("https://test***.*****.cn/*****/index.php",DataStore.postParam);
    		//通过JSONObject解析JSON,得到webtoken的value
    		String webtoken = JSONObject.parseObject(JSONObject.parseObject(result).getString("data")).getString("webtoken"); 
    		System.out.println(webtoken);
    	}
    

    其次由于我的local Storage里的已登录信息的value是通过Base64加密的,所以我需要解密得到登录信息明文(解密这个大家百度就知道了,很多在线工具)
    这里我们需要将之前POST请求到的结果进行处理了:
    我们通过Base64ToStringUtil .java进行处理
    public class Base64ToStringUtil {

    public static void Base64toLogined(DriverBase driverBase) {
    	//post请求登陆状态,获得已登录状态的token等信息,通过Base64拼成浏览器Local Storage缓存区的userInfo的已登录状态字段信息
    	driverBase.get("https://test***.****.cn/");/*这个网址可以写你们首页网址就好了*/
    	String tokenOfLogined = "";
    	String postResult = SendRquest.sendPost(DataStore.loginRequestUrl,DataStore.postParam);
    	//通过JSONObject解析JSON,得到webtoken的value
    	String webtoken = JSONObject.parseObject(JSONObject.parseObject(postResult).getString("data")).getString("webtoken"); 
    	System.out.println(webtoken);
    	String requestValue = "{\"avatarurl\":\"https://testimage.comein.cn/comein-files/img/2018-08-29/dd5f3ae0-4bc4-447d-b425-e2c47014af47/dd5f3ae0-4bc4-447d-b425-e27.jpg\"";/*这里是不带登录的关键信息token的内容,我们写死就好了*/
    	String jsonVlaue = requestValue
    			+ "\"webtoken\":\""+webtoken+"\"},\"webtoken\":\""+webtoken+"\"}";
    	Base64 base64 = new Base64();
    	try {
    		tokenOfLogined = base64.encodeToString(jsonVlaue.getBytes("UTF-8"));
    	} catch (UnsupportedEncodingException e) {
    		Log.info("------------------登陆token信息转Base64失败----------------");
    		e.printStackTrace();
    	}
    	//添加userInfo和usersave的值至Local Storage缓存区
    	String userinfo="window.localStorage.setItem('userinfo',"+"'"+tokenOfLogined+"'"+")";
    	String usersave="window.localStorage.setItem('usersave','1')";
    	JavascriptExecutor jse = (JavascriptExecutor) driverBase.getDriver();
    	//调用方法执行JS代码
    	jse.executeScript(userinfo);
    	jse.executeScript(usersave);
    }
    }
    

    最后,我们直接在那你需要调用的地方直接调用该类,就可以实现绕过登录的功能了。有什么不太清楚的可以随时评论私聊我。

    展开全文
  • 主要介绍了Python+Selenium使用Page Object实现页面自动化测试,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 判断页面是否正确打开,依据(标题、url、页面关键字)三个元素进行判断 # 如果正常打开,返回True,否则,返回False def if_page_opened_success(self): act_page_title = self.driver.title act_page_url = ...
    # -*- encoding: utf-8 -*-
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions
    from selenium.webdriver.common.by import By
    class if_pageOpean_juage():
        url = None
        title = None
        keyword_xpath = None
        keyword_text = None
        open_timeout = 5
        def __init__(self, driver):
            self.driver = driver
        def open(self):
            self.driver.get(self.url)
        # 1. 判断页面是否正确打开,依据(标题、url、页面关键字)三个元素进行判断
        # 如果正常打开,返回True,否则,返回False
        def if_page_opened_success(self):
            act_page_title = self.driver.title
            act_page_url = self.driver.current_url
            # 1. 等待页面加载(动态的),等待页面出现指定关键字,如果没出现,返回False,对应信息
            try:
                WebDriverWait(self.driver, self.open_timeout).until(
                    expected_conditions.text_to_be_present_in_element((By.XPATH, self.keyword_xpath), self.keyword_text))
            except:
                return False, {"err_msg": "等待超时,指定页面元素(%s, %s)未找到" % (self.keyword_xpath, self.keyword_text)}
            failed_dic = {}
            if self.title != act_page_title:
                failed_dic['title'] = {"exp_value": self.title, "act_value": act_page_title}
            if self.url != act_page_url:
                failed_dic['url'] = {"exp_value": self.url, "act_value": act_page_url}
    
            if len(failed_dic.keys()) == 0:
                return True, {}
            else:
                return False, failed_dic
    

     

    展开全文
  • 使用Selenium对QQ邮箱登录页面进行自动化测试 1.测试需求 Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla ...
  • python + selenium自动化测试--页面操作

    千次阅读 2017-12-27 14:52:07
    一般URL可以帮助我们判断跳转页面是否正确,或者URL中部分字段可以作为我们自动化测试脚本期待结果的一部分。print(driver.current_url)3、页面标题 获取当前页面标题.title # 获取当前页面标题显示的字段 p
  •  而WebDriver测试执行时,偶然也会因此发生页面跳转或者加载的超时异常,而使得流程性的测试中断,给测试完整性和有效性带来很大的损失。其实这种问题很好解决,只需要重写或者封装一下GET方法来实现
  • 在能够保证业务的足够稳定性的条件下,UI自动化测试能够节省很多回归功能的人力。这就是我的一个小目标。 测试需要全面,需要对结果去做判断。如果熟悉单元测试或接口自动化的朋友,应该知道这些其实就是功能覆盖、...
  • web自动化测试视屏

    2017-10-26 12:49:25
     6.(第三层次)熟练掌握上面技巧之后,开始学习怎么将页面元素与代码分离,学习数据驱动(TestNG),以及怎么样结合Excel去做自动化测试。  7.(第四层次)学习持续集成的方法,怎么样将自动化测试更加“自动化...
  • 发布了小程序的自动化测试框架Minium,提供了多种运行验证方式,其特点: 支持一套脚本,iOS & Android & 模拟器,三端运行 提供丰富的页面跳转方式,看不到也能去得到 可以获取和设置小程序页面数据,让测试不止...
  • 用python+selenium写的自动化测试代码,自动测试登录账号。读取和写入都是用的txt方式,读取多个账号进行登录,登录不上的账号打印出提示语
  • 当我第一次知道自动化测试的时候,除了知道“自动化”这三个有些高大上的称呼之外,我对自动化测试一无所知,正如谈恋爱一样,找女朋友之前要知道她是谁。 自动测试就是把以人为驱动的测试转化为机器执行的一种过程...
  • 前端自动化测试实践

    万次阅读 多人点赞 2018-10-31 23:35:49
    通过前端自动化测试,来解放自我
  • Grails自动化测试

    千次阅读 2016-02-17 18:00:33
    自动化测试是进行敏捷开发的重要前提,那Grails对自动化测试框架进行了很好的集成。首先Grails创建的项目默认将自动化测试程序(test case)放到test文件夹中,而test文件夹又包含了unit和integration两个子文件夹。...
  • 一、前言 最近有童鞋和我抱怨,说很...当我第一次知道自动化测试的时候,除了知道“自动化”这三个有些高大上的称呼之外,我对自动化测试一无所知,正如谈恋爱一样,找女朋友之前要知道她是谁。 自动测试就是把以...
  • 人工智能自动化测试探索

    千次阅读 2019-05-17 17:41:08
    自动化测试技术从最初的模拟硬件方式,到基于数据驱动,基于关键字驱动,再到现在基于功能和指令驱动的自动化测试技术,在各类软件项目中的应用也越来越多,越来越成熟。自动化测试技术有良好的可重复性,高并发和高...
  • [人工智能]AI移动自动化测试

    千次阅读 2017-03-28 17:14:20
    1. 实现的效果开发者通过上传移动端软件(apk,pkg等)到云端,点击云端自动化测试来对上传的软件进行自动化测试,分析和bug定位,最终输出bug检测结果.2.实现的步骤这里先列出大致的一个实现步骤,然后对每一步如何做,在列...
  • 自动化接口测试之Postman(一篇搞定)

    万次阅读 多人点赞 2018-07-13 14:17:33
    Postman自动化接口测试 该篇文章针对已经掌握 Postman 基本用法的读者,即对接口相关概念有一定了解、已经会使用 Postman 进行模拟请求的操作。 当前环境: Window 7 - 64 Postman 版本(免费版): ...
  • 自动化测试面试题及答案大全(5)

    万次阅读 多人点赞 2019-04-20 09:17:45
    1.Selenium是否支持桌面应用软件的自动化测试。 Selenium不支持桌面软件的自动化测试,Selenium是根据网页元素的属性才定位元素,而其他桌面软件自动化测试工具是根据桌面元素的位置来定位元素,当然现在也有根据...
  • 二、什么是自动化测试框架 三、非PO模式和PO模式优缺点对比 四、如何从0到1搭建PO模型 五、自动化测试框架和PO的关系 六、总结 一、什么是PO模式 全称:page object model 简称:POM/PO PO模式最核心的思想是...
  • 页面中内嵌了很多框架,无法定位到页面中的元素,无法完成click操作,pycharm中报错selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"class name","selector":"l...
  • package navigateBack; import org.testng.annotations.Test; import org.testng.annotations.BeforeClass; import java.sql.Driver; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.Chr...
  • 上一节讲到了如何利用获得的元素来获取元素的信息,这次来说一下如何获取浏览器相关的信息,主要是页面的路径:URL和页面的标题:title比较常用一定要记住 1.获取页面相关信息的方法 current_url :当前页面的URL...
  • 自动化测试面试题及答案

    千次阅读 2020-04-26 11:48:48
    自动化测试是什么?自动化测试学什么?自动化测试面试题及答案?–看完后吊打面试官! 一、前言 最近有童鞋和我抱怨,说网上很难搜到那些全面又合适的自动化测试面试题,这里根据我个人的经验以及收集整理的: 你没...
  • 自动化测试入门(2)——自动化学习方向

    千次阅读 多人点赞 2019-03-15 15:22:35
    不管你们是打算学APP自动化测试或者web自动化测试,还是其他的自动化测,都有一个前置条件,那就是必须懂编程语言。 1.编程语言选择 如果你还没决定好方向,那么先去学习一门编程语言再好不过。 不要觉得学一门编程...
  • iOS自动化测试的那些干货

    万次阅读 多人点赞 2017-03-09 12:08:37
    前言 如果有测试大佬发现内容不对,欢迎指正,我会...目前,大多数App还停留在人工测试阶段,人工测试投入的成本最低,能够保证核心功能的使用,而且测试人员不需要会写代码。但是,在很多测试场景下,人工测试的效率
  • Python+Selenium自动化测试脚本(入门)

    千次阅读 多人点赞 2019-08-06 16:55:59
    最近在学习Python+selenium自动化测试,计划把公司已有一套自动化测试框架(UIAutomation+C#)用Python+Selenium框架实现一遍。先拿了一个csdn的登录页面练练手,并以此写个Demo,作为记录,同时也可以给刚入门的人...
  • 自动化测试代码的自动生成

    千次阅读 2015-06-30 10:36:32
    自动化测试代码的自动生成一、界面展示 我们来看看可视化的代码自动化生成界面设计, 二、字段用途解释 选择目标测试类 指: 需要生成代码所要依据的接口类名称。 备注: 这个是使用的文件上传,自动载入接口...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 64,404
精华内容 25,761
关键字:

自动化测试页面跳转