前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >selenium2java写一个设置秒杀价的脚本

selenium2java写一个设置秒杀价的脚本

作者头像
FunTester
发布2019-09-10 14:15:52
7220
发布2019-09-10 14:15:52
举报
文章被收录于专栏:FunTesterFunTester

本人在使用selenium做测试的时候,有时候需要去后台管理界面去设置一些测试数据,所以写了一些脚本,有一个比较有代表性的,因为这里的设置按钮和课程详情并不在一个页面,而是在列表页面。所以查找起来比较麻烦。先分享代码,供大家参考。

先放一下后台的页面和xml信息:

下面是我的代码:

代码语言:javascript
复制
//设置秒杀价
    public void setSeckillPriceByCourseId(int courseId, int price) throws InterruptedException {
        clickCourse();//点击进去课程列表
        clickFormalCourse();//选择班课列表
        int status = findCourseByIdAndSetSeckillPrice(courseId, price);//根据courseid查找班课设置秒杀价
        if (status != 2) {
            outpu(status, "设置秒杀价失败!");
        }
    }

下面是具体的方法:

代码语言:javascript
复制
    /*
     * 分页遍历课程,查找相应班课
     * 返回值1:找到该课程,2:设置秒杀价完成,3:已经开始秒杀,4前四页未找到该课程
     */
    public int findCourseByIdAndSetSeckillPrice(int courseId, int price) throws InterruptedException {
        int times = 0;//标记页面
        int mark = 0;//标记状态
        sleep(0);
        while(true) {
            times++;
            List<WebElement> seckills = findElementsByPartialText("秒杀");//获取所有秒杀状态按钮集合
            for (int i = 0; i < seckills.size(); i++) {//遍历集合中所有元素
                //获取date_course_id,来判断是否是等于参数id,然后点击
                String course = seckills.get(i).getAttribute("data-course_id");//获取该元素对应课程id
                if (course.equals(courseId+"")) {//比较id
                    mark = 1;//更改标记,表示发现课程
                    String status = seckills.get(i).getText();//获取秒杀状态
//                    output(status);
                    if (status.equals("开始秒杀")) {
                        scrollToElement(seckills.get(i));//滚动到该元素
                        clickByJs(seckills.get(i));//通过js点击
                        sleep(0);
                        findElementByIdAndClearSendkeys("input-modal_promotion_price", price);//设置秒杀价
                        findElementByIdAndClick("btn-ok-product_promotion");//确定
                        boolean key = true;
                        while(key){//等待保存完毕,再次确认
                            if (exists(By.xpath("/html/body/div[7]/h2")) && getTextByXpath("/html/body/div[7]/h2").equals("操作成功")) {
                                key = false;
                                break;
                                }
                            }
                        clickSure();
                        output("设置秒杀价成功!");
                        mark = 2;//更改标记,表示已经完成秒杀
                        } else if (status.equals("结束秒杀")) {
                            output("该课程已经开始秒杀了!");
                            mark = 3;//标记,表示已经在秒杀了
                            output("已经开始秒杀!");
                            }
                    }
                }//遍历结束
            if (mark != 0) {
                return mark;
                }
            if (times > 2) {
                output("未找到该课程!");
                mark = 4;//更改标记,表示未找到
                return mark;
                }
            }
    }

中间js滚动到 某个元素的方法:

代码语言:javascript
复制
    //滚动到某个元素
    public void scrollToElement(WebElement element) {
        JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeScript("arguments[0].scrollIntoView(true);", element);
    }

中间js点击某个元素的方法:

代码语言:javascript
复制
    //通过js点击
    public void clickByJs(WebElement element) {
        JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeScript("arguments[0].click();", element);
        //第二种点击方法
//        ((JavascriptExecutor) driver).executeScript("arguments[0].click()", question);
    }

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FunTester 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档