【问题标题】:Java selenium - skip span element within divJava selenium - 跳过div中的跨度元素
【发布时间】:2021-02-13 15:15:38
【问题描述】:

这是我的html 结构,我正在尝试跳过div 中的span 以仅获取div 的文本(这是动态的)进行测试。

<div class="items">
   <div class="payment void" id="payment-000000899799">
      <div class="payment__details">
         <div class="method">CASH <span class="label"><span>Payment Voided</span></span></div>
         <div class="date">2/12/2021, 3:02:15 PM</div>
      </div>
      <div class="payment__details">
         <div class="amount">$20.00</div>
         <div class="ref">Ref ID: REF-ID-01</div>
      </div>
   </div>
   <div class="payment sale" id="payment-000000899806">
      <div class="payment__details">
         <div class="method">CASH </div>
         <div class="date">2/12/2021, 3:02:21 PM</div>
      </div>
      <div class="payment__details">
         <div class="amount">$100.00</div>
         <div class="ref">Ref ID: REF-ID-02</div>
      </div>
   </div>
</div>

在我的步骤定义中,我已经

List<List<String>> data = capturedData.raw();        
WebElement paymentDetails = driver.findElement(By.xpath("(//*[@class='payment__details']/div[@class='method'])[" + data.get(1).get(0) + "]"));
    
    String paymentType = paymentDetails.getText();
    System.out.println(paymentType); //This prints CASH Payment Voided

但实际上我只想要'CASH',它是div 的文本,并跳过span 的文本'Payment Voided'。而data 来自功能文件。

如何仅获取 div 的文本并跳过同一 div 内的文本 span

【问题讨论】:

  • 是否更容易获得展位
    CASH 然后从列表中选择第二个,使用查找元素。
  • element.getAttribute("outerHTML") 是您在此处寻找的内容。

标签: java selenium xpath webdriver


【解决方案1】:

你不能直接跳过它,因为它是元素的一部分。

第一种方法

String fulltext = driver.findElement(By.xpath("//*[@class='payment__details']/div[@class='method'][1]")).getText();
String spantext = driver.findElement(By.xpath("//*[@class='payment__details']/div[@class='method'][1]/span")).getText();
//Now replace span text with ""    
String output = fulltext.replace(span,"");

第二种方法

 WebElement parent = driver.findElement(By.xpath("//*[@class='payment__details']/div[@class='method'][1]"));
 JavascriptExecutor js = (JavascriptExecutor) driver;
        String output = (String) js.executeScript("return arguments[0].firstChild.textContent",parent);

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签