有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法从嵌套对象获取属性

我花了很多时间试图解决这个问题,但我找不到一个可行的解决方案我做了几个小时的研究

我目前正在使用硒。页面本身是有角度的,但在本例中这应该不是问题

我试图将嵌套类存储到列表中,但我无法获得我用许多不同方法(如xPath、cssselector和innerHTML)尝试过的属性

下面是整个物体的图片

enter image description here

我认为从上到下的结构是这样的:

<div _ngcontent-sc11="" class="Stock-busses"> 

<div _ngcontent-sc11="" class="Stock-bussesList ng-tns-c11-6 isCards ng-star-inserted" style="">

<mysite-truck _ngcontent-sc11="" class="Stock-truck ng-tns-c11-6 ng-trigger ng-trigger-listItem ng-
star-inserted" _nghost-sc17="" style="">

<a _ngcontent-sc17="" class="Truck ng-star-inserted" href="null" style=""> (HERE IS WHERE the object begins)

这是我最喜欢的一个:


@Test
public void Search_certain_truck() {

  List < WebElement > elements = driver.findElements(By.className("Stock-trucks"));
  java.util.Iterator < WebElement > program = elements.iterator();
  while (program.hasNext()) {
      String values = program.next().getText();

      if (!values.equals("null")) {

          List < WebElement > elem = driver.findElements(By.xpath("//div[@class='class=\"Stock-trucksList ng-tns-c11-6 isCards ng-star-inserted"));

          java.util.Iterator < WebElement > progz = elem.iterator();

          while (program.hasNext()) {
              String Truck_title = program.next().getText();

              if (!Truck_title.equals("null")) {
                  System.out.println(Truck_title);
              } else {

              }
          }

          //System.out.println(values); //THIS WORKS TO ALERT LINE 666

      } else {

      }
  }
}

我可以提醒第666行,但当我试图抓取嵌套的东西时,却一无所获

以下是atempt 2:

 @Test
 public static void myatempt2() {
     List < String > TruckList = new ArrayList < String > ();
     List < String > TruckHref = new ArrayList < String > ();
     List < WebElement > x = driver.findElements(By.xpath("//div[@class='Stock-trucks']"));

     Loc.NavXPath(Our_Truck);
     Sa.WaitForBrowser(2000);

     // List<WebElement> x= driver.findElements(By.cssSelector("volvo-truck"));
     // List<WebElement> x= driver.findElements(By.className("volvo-truck"));
     driver.findElement(By.xpath("//div[@class='Stock-trucks ui-draggable ui-draggable-handle']")).getAttribute("href");
     for (WebElement webElement: x) {

         // TruckList.add(webElement.getText());
         //         TruckList.add(webElement.getAttribute("innerHTML"));
         System.out.println(webElement.getAttribute("innerHTML"));
         // System.out.println(webElement.getText());

     }

     for (int counter = 0; counter < TruckList.size(); counter++) {
         // System.out.println(TruckList.get(counter));
     }

     String FirstEl = TruckList.get(0);
 }

我还是抓不到嵌套的对象

这里是指向页面的链接:Pastebin


共 (1) 个答案

  1. # 1 楼答案

    我已经解决了这个问题,但我并不在乎如何储存各种物品:)

    @Test
    public void Verify_a_Specific_Inquiry() throws Exception {
    
    
        // Loc.NavXPath(Our_Stock);
    
        List<String> TruckList = new ArrayList<String>();
        List<String> TruckListHref=new ArrayList<String>();
        List<WebElement> Truck_List_Element = driver.findElements(By.xpath("//div[@class='Stock-trucksList ng-tns-c11-6 isCards ng-star-inserted']"));
    
        for (WebElement x : Truck_List_Element) {
    
            // System.out.println(x.getText());
    
            // findElements(By.className("Truck ng-star-inserted"));
    
            // List<WebElement> in= driver.findElements(By.xpath("//body//volvo-truck[2]"));
            // //GET ONE TRUCK
    
            List<WebElement> in = driver.findElements(By.tagName("volvo-truck"));
    
            for (WebElement z : in) {
    
                // System.out.println(z.getText());
    
                TruckList.add(z.getText());
    
                //System.out.print(z.getClass("Truck ng-star-inserted").)
    
                TruckListHref.add(z.findElement(By.tagName("a")).getAttribute("href"));
    
                //System.out.print(z.findElement(By.tagName("a")).getAttribute("href"));
    
            }
    
        }
    
        String FirstTruck = TruckList.get(0);
        String FirstHref = TruckListHref.get(0);
    
        System.out.println(FirstTruck);
        System.out.println(FirstHref);
    
        driver.quit();
    
    }