【问题标题】:Cant get attributes from nested objects无法从嵌套对象中获取属性
【发布时间】:2020-01-31 18:02:50
【问题描述】:

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

我目前正在使用硒。页面本身是有角度的,但在这种情况下应该没有问题。

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

下面是整个物体的图片

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

<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 行,但当我试图抓取嵌套的东西时,我什么也得不到

这里是尝试 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

【问题讨论】:

    标签: java html selenium


    【解决方案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();
    
    }
    

    【讨论】:

      猜你喜欢
      • 2018-02-06
      • 2013-10-11
      • 2021-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多