selenium2java寫一個設置秒殺價的腳本

本人在使用selenium作測試的時候,有時候須要去後臺管理界面去設置一些測試數據,因此寫了一些腳本,有一個比較有表明性的,由於這裏的設置按鈕和課程詳情並不在一個頁面,而是在列表頁面。因此查找起來比較麻煩。先分享代碼,供你們參考。html

先放一下後臺的頁面和xml信息: java

下面是個人代碼:編程

//設置秒殺價
	public void setSeckillPriceByCourseId(int courseId, int price) throws InterruptedException {
		clickCourse();//點擊進去課程列表
		clickFormalCourse();//選擇班課列表
		int status = findCourseByIdAndSetSeckillPrice(courseId, price);//根據courseid查找班課設置秒殺價
		if (status != 2) {
			outpu(status, "設置秒殺價失敗!");
		}
	}

下面是具體的方法:框架

/*
	 * 分頁遍歷課程,查找相應班課
	 * 返回值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滾動到 某個元素的方法:性能

//滾動到某個元素
	public void scrollToElement(WebElement element) {
		JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeScript("arguments[0].scrollIntoView(true);", element);
	}

中間js點擊某個元素的方法:測試

//經過js點擊
	public void clickByJs(WebElement element) {
		JavascriptExecutor js = (JavascriptExecutor) driver;
		js.executeScript("arguments[0].click();", element);
		//第二種點擊方法
//		((JavascriptExecutor) driver).executeScript("arguments[0].click()", question);
	}

技術類文章精選

  1. java一行代碼打印心形
  2. Linux性能監控軟件netdata中文漢化版
  3. 接口測試代碼覆蓋率(jacoco)方案分享
  4. 性能測試框架
  5. 如何在Linux命令行界面愉快進行性能測試
  6. 圖解HTTP腦圖
  7. 如何測試機率型業務接口
  8. httpclient處理多用戶同時在線
  9. 將swagger文檔自動變成測試代碼
  10. 五行代碼構建靜態博客
  11. httpclient如何處理302重定向
  12. 基於java的直線型接口測試框架初探

非技術文章精選

  1. 爲何選擇軟件測試做爲職業道路?
  2. 成爲傑出Java開發人員的10個步驟
  3. 寫給全部人的編程思惟
  4. 自動化測試的障礙

公衆號地圖 ☢️ 一塊兒來~FunTester

相關文章
相關標籤/搜索