智慧點選標籤至最後一個再返回至第二個
<ul><li><p>場景說明:APP中上部一般都會有動態標籤,當點選最後一個標籤,標籤會有整體左移的效果, 左移後,頁面的最右側標籤不一定是最後一個,需要判斷,如果不是最後一個, 繼續點選一次,如果是,則說明 標籤整體左移功能正常。 </p> <div align='center'\> <img src=https://note.youdao.com/yws/public/resource/3dbba6b749bd167b6c08b7e72297a0c8/xmlnote/661ABAC34B1F44D0961832AF280DC449/1907 /> <img src=https://note.youdao.com/yws/public/resource/3dbba6b749bd167b6c08b7e72297a0c8/xmlnote/5196E0C2F8424C0EA9A68AB161B6E0CB/1904 /> </div> </li>
<li><p>吐槽點:使用xpath的定位方式是不是很low,稍後和前端商量下,看看能不能幫忙加個ID等。 </p> <p>吐槽點2:get_text()方法中我註釋了幾個xpath,主要是因為頁面上使用相對地址地位元素時, 發現多個元素的xpath是一模一樣的,故將元素的fullxpath複製之後, 觀察xpath路徑規律,擷取對應的xpath,就不會報錯了! </p> </li> <li><p>更新點:之前有人問過我,為什麼標籤沒有ID,定位不到,該怎麼點選? 然而針對我下面的程式碼,我就非常需要內部文字層的ID了,否則使用xpath會導致程式碼執行效率很低。 一直很少和前端打太多交道,今天拜託前端在各個標籤的文字層上都加個ID,前端人還是不錯的, 有了ID,相信程式碼書寫就能更簡單,執行也能更快了! </p> </li> </ul> ``` package com.jiubei.homepage;
import org.testng.annotations.Test; import com.jiubei.baseinterface.SleepOwn; import com.jiubei.testng.Init; import java.net.MalformedURLException; import org.openqa.selenium.By; import org.openqa.selenium.NoSuchElementException; public class Homepage extends Init implements SleepOwn{
public int labs_id=2; @Test(enabled=false) //進入活動訊息頁面 public void home_page_f() throws MalformedURLException { sleep_own(2); driver.findElement(By.className("android.widget.ImageView")).click(); sleep_own(2); String message_title=driver.findElement(By.id("com.jiubei.shop:id/tv_center_text")).getText(); System.out.println(message_title); sleep_own(2); } @Test(enabled=false)//退出活動訊息並返回首頁 public void action_message_f(){ try { sleep_own(1); driver.findElement(By.id("com.jiubei.shop:id/tv_left_text")).click(); } catch (NoSuchElementException e) { action_message_f(); } }
@Test//點選至最後一個標籤 public void switch_end_class_f(){ sleep_own(6); System.out.println("begin"); for(labs_id=this.labs_id;labs_id<6;labs_id++){ if(labs_id==5){ String textx=get_text(); System.out.println(textx); click_labs_f(labs_id); String texty=get_text(); sleep_own(2); verify_same_labs_f(textx,texty);
}else{ click_labs_f(labs_id); } } labs_id=labs_id-4;//將標籤ID置為2 } @Test//需要確認點選第二個標籤後,標籤會不會整體右移動,即:點選後原第二個標籤會不會變為第三個標籤 public void switch_second_class_f(){ //為什麼是第二個而不是第一個,因為APP標籤移動本身不夠穩定,標籤名過長時,顯示的第一個標籤的ID為2
click_labs_f(labs_id); String textx=get_text(); System.out.println(textx); click_labs_f(labs_id); String texty=get_text(); verify_same_labs_f(textx,texty); } //首頁點選一個分類標籤 public void click_labs_f(int labs_id){ labs_id=this.labs_id; driver .findElement(By /*.xpath("//android.widget.LinearLayout[@resource-id='com.jiubei.shop:id/groupView']/android.widget.LinearLayout["+labs_id+"]"))*/ .xpath("//android.widget.LinearLayout[@resource-id='com.jiubei.shop:id/groupView']/android.widget.LinearLayout["+labs_id+"]")) .click(); } public void click_back_labs_f(){ sleep_own(2); driver .findElement(By .xpath("//android.widget.LinearLayout[3]//android.widget.RelativeLayout[1]//android.widget.TextView[1]")) .click(); System.out.println(labs_id); }
public String get_text(){ String lab=driver .findElement(By ////android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[2]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.HorizontalScrollView[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout["+labs_id+"]/android.widget.RelativeLayout[1]/android.widget.TextView[1] //android.widget.LinearLayout["+labs_id+"]//android.widget.RelativeLayout[1]//android.widget.TextView[1] .xpath("//android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[3]/android.widget.RelativeLayout[1]/android.widget.TextView[1]")) .getText(); return lab; } //確認是否為最後/第二一個標籤 public void verify_same_labs_f(String text1,String text2){ if(text1.equals(text2)){ System.out.println("當前元素為:"+text2); //System.out.println("正常點選到最後一個標籤"); }else{ text1=get_text(); System.out.println(text1); click_labs_f(labs_id); text2=get_text(); System.out.println(text2); verify_same_labs_f(text1, text2); } } //介面實現的方法 public void sleep_own(int i) { try { Thread.sleep(i*1000); } catch (InterruptedException e) { e.printStackTrace(); } }
}
```
總結:能判斷只能點選至最後一個標籤,當然也可以只能點選至第一個標籤,各位自己試試,我就不寫出來了! 有疑問的話,可以加群:219537016.也可以新增微信群