selenium遍歷控件集合


場景:需要重復增加地址欄信息,如果地址信息超過了5個就不開始增加

如圖:

1.找到控件集合,在遍歷每個子元素,在進行選擇

1.先找到最外層的div的控件集合

2.外層的css定位為:

int startSumAdress =driver.findElements(By.cssSelector("div#ship_addr_list > div.list")); 外層的地址集合列表 #集合
		if(startSumAdress<5){
			while (startSumAdress<5){			
				addAdress();  //新增地址
				startSumAdress = op.getElements("ShippingAddressList").size();//每次都取最新的集合長度
				Log.logInfo("現在是第幾個地址:"+startSumAdress);
			}						
		}		

3.取得集合中的某一個元素,如一個訂單列表,你需要取得他里面的一個訂單號在進行編輯

如圖,都測試環境的數據,應該沒有關系

1.取的他某一行的數據,肯定還是要先獲取控件集合

2.在取得他的某一行,我們以css為例

外層控件集合的css:

#userMain > div.userH_box.orderBox.p15 > table> tbody

第一行數據訂單的控件集合:

#userMain > div.userH_box.orderBox.p15 > table > tbody > tr:nth-child(2) > td:nth-child(1) > a

第二行數據訂單的控件集合:

#userMain > div.userH_box.orderBox.p15 > table > tbody > tr:nth-child(3) > td:nth-child(1) > a

從上發現:變化的是> tr:nth-child(2)  這里面的值

故事就開始了:

List<WebElement> rows =driver.findElements(By.cssSelector("#userMain > div.userH_box.orderBox.p15 > table > tbody > tr"))// 獲取列表行數,注意這個tr

for (int i = 1; i < rows.size(); i++) { //i就是控制你要取的那幾行
				getcode = rows.get(i).findElement(By.cssSelector("td:nth-child(1)> a")).getText();//取得數據
				if (getcode.equals(ordercode[0])) {
					rows.get(i).findElement(By.cssSelector("td:nth-child(1)> a")).click();//點擊第一行的數組
					Log.logInfo("快速支付訂單編號為:"+getcode);
					Log.logInfo("查找到對應的訂單號!!!!");
					break;
				} else {
					Log.logError("沒有查找到對應的訂單號!!!!");
				}
				Log.logInfo("getcode:" + getcode);
			}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM