繁体   English   中英

WebElement getText() 返回空值

[英]WebElement getText() Returns empty value

以下代码用于使用 Selenium Webdriver 从亚马逊获取手机价格。

  1. 如果我在 xpath 末尾使用 /span 1它不会打印任何内容

  2. 如果我不使用 xpath 它会打印价格

HTML 元素的源代码在此处输入图像描述

    WebDriverManager.chromedriver().setup();
    
    WebDriver driver = new ChromeDriver();
    
    driver.manage().window().maximize();
    
    driver.get("https://www.amazon.in");
    
    
    
    driver.findElement(By.xpath("//input[@id='twotabsearchtextbox']")).sendKeys("one");
    
    Thread.sleep(2000);
    
    List<WebElement> all_mobile= driver.findElements(By.xpath("//div[@id='suggestions']/div/span"));
    
    //Thread.sleep(2000);
    
    int total= all_mobile.size();
    
    //System.out.println(total);
    
    for(int i=0; i<total;i++)
    
    {
    
    String mobiles = all_mobile.get(i).getText();
    
    //System.out.println(mobiles);
    
    if(all_mobile.get(i).getText().equals("plus nord 5g"))
    
    {
    
    all_mobile.get(i).click();
    
    break;
    
    }
    
    }
    
    Thread.sleep(2000);
    
    String  text = driver.findElement(By.xpath("(//span[@aria-label='FREE Delivery by Amazon'])[1]/span")).getText();
    
    System.out.println(text); //it prints FREE Delivery by Amazon working fine if I use /span at end or not both ways but below iam getting issue in price
    
    String  price = driver.findElement(By.xpath("(//span[@class='a-price'])[1]/span[1]")).getText();
    
    System.out.println(price); //it prints nothing if iam using /span[1] at end   
    
    String  PRICE = driver.findElement(By.xpath("(//span[@class='a-price'])[1]")).getText();
    
    System.out.println(PRICE); //it prints ₹29,990 if iam not using /span[1] at end    

有人可以帮忙吗? 为什么我使用 getText() 得到不同的输出?

价格文本来自第二个span 元素。 <span aria-hidden="true"> 第一个跨度被 CSS 隐藏

<span class="a-price" data-a-size="l" data-a-color="price">
  <span class="a-offscreen">₹29,990</span>
  <span aria-hidden="true">
    <span class="a-price-symbol">₹</span>
    <span class="a-price-whole">29,990</span>
  </span>
</span>

您也可以从第二个 span 元素中获取价格

 System.out.println("Experiments ");
 price = driver.findElement(By.xpath("(//span[@class='a-price'])[1]/span[2]")).getText();
 System.out.println(price);

WebElement 的 getText() 文档表明

获取该元素的可见(即未被 CSS 隐藏)文本,包括子元素。

<span class="a-offscreen">8888</span>已隐藏。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM