【问题标题】:Using Selenium Webdriver how to retrive date text使用 Selenium Webdriver 如何检索日期文本
【发布时间】:2017-07-18 02:51:16
【问题描述】:

使用 selenium webdriver,我需要从 div 标签中获取文本,其中包含日期,如何使用它

这里是显示 div 标签的 HTML 标签。

<div class="gridlayout-column" style="padding-left: 10px; width: calc((100% - 110px) * 0.166667 + 10px);">
    <div class="gridlayout-content">
        <label class="fieldlabel">
            <div class="fieldlabel-label">Last update</div>
            <div class="fieldlabel-content">Jul 12, 2017</div>
        </label>
    </div>
</div>

我为上述内容创建了一个 webelement 并尝试使用

WebElement lastUpdate = driver.findElement(By.xpath("//*[ . = 'Last update' and //div[contains(@class, 'fieldlabel-content')]]/following-sibling::div[@class='fieldlabel-content']"));

lastUpadte.getText();

输出是--

所以我的另一个选择是这个

Date expiryDate = null;
    DateFormat formatter = new SimpleDateFormat("MMM DD, YYYY");
    String dateString = lastUpdate.getText();
     try {
       expiryDate = formatter.parse(dateString);
    } 
     catch (ParseException e) {
     e.printStackTrace();
    }

还是不行。我确定我做得不对,所以请帮我解决这个问题。

【问题讨论】:

  • 此 xpath "//label[@class='fieldlabel']/div[2]" 的 getText 是否返回日期?
  • 你能在你的问题中添加你的硒代码吗?我们需要看看webElement是从哪里来的。
  • WebElement webElement = driver.findElement(By.xpath("//*[ . = 'Last update' and //div[contains(@class, 'fieldlabel-content')]]/following-sibling::div[@class='fieldlabel-content']")); webElement.getText(); 从您的代码中删除 findElementdriver。然后再试一次。
  • @Buaban 我已经添加了 webElement 部分

标签: java selenium selenium-webdriver


【解决方案1】:

试试下面的代码获取date

String date = driver.findElement(By.xpath("//div[@class='gridlayout-content']//div[@class='fieldlabel-content']")).getText();
System.out.println(date);

你可以这样做。

WebElement date = driver.findElement(By.xpath("//div[@class='gridlayout-content']//div[@class='fieldlabel-content']"));
String s = date.getText();
System.out.println(s);

【讨论】:

    【解决方案2】:

    我认为问题在于您的 XPath 不正确。您有几个选择来修复 XPath 表达式。

    首先:根据同级文本值“上次更新”查找日期元素。

    WebElement lastUpdate = driver.findElement(By.xpath("//*[div='Last update']/*[@class='fieldlabel-content']");
    

    第二:通过文本'Last update'进入兄弟元素,然后找到父元素并找到日期。

    WebElement lastUpdate = driver.findElement(By.xpath("//*[text()='Last update']/../*[@class='fieldlabel-content']");
    

    您可以通过以下方式获取日期文本:

    lastUpdate.getAttribute("innerText");
    

    最后,您需要将date format 更改为"MMM dd, yyyy"

    DateFormat formatter = new SimpleDateFormat("MMM dd, yyyy");
    

    【讨论】:

    • 你好@Buaban,我想从html中检索日期,你应该使用String,而不是使用Webelement。如果我错了,请纠正我。
    • @JainishKapadia 我添加了获取文本的代码。感谢您的提问。
    • 参考我的回答,你的回答不会返回日期,它会在控制台窗口中返回xpath
    • @JainishKapadia 我完全不明白你的意思。我的回答将修复 xpath,以便它可以找到元素。然后它可以从元素中获取文本。
    • 您正在代码打印webelement,但问题是打印日期为text
    猜你喜欢
    • 2018-02-04
    • 2019-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2020-10-31
    相关资源
    最近更新 更多