首页 > 解决方案 > Selenium Java - 如何从单个下拉列表中提取数据(时间字段)

问题描述

大家好:我有下一个关于从单个日历字段中提取数据的家伙。

我想HH.MM.AM/PM从单个日期字段中获取信息 ( ),但我做不到。

我一直在尝试下一个代码:

WebElement currTime = driver.findElement(By.xpath("/html/body/div[31]/div[2]/div/div[1]/" +
        "dv-add-activity-note-form/form/div[1]/div[2]"));

String date = ((JavascriptExecutor) driver).executeScript("return arguments[0].textContent;", currTime).toString();

log.info("Time displayed is: " + date);

我得到的唯一结果是“显示的时间是:”和空白......

这是 HTML 的一部分:

<p-calendar _ngcontent-c75="" appendto="body" class="calendar-field time-field ng-tns-c28-14 ui-inputwrapper-filled ng-untouched ng-pristine ng-valid" formcontrolname="start_time" hourformat="12" placeholder="Enter time">
        <span class="ng-tns-c28-14 calendar-field-container ui-calendar ui-calendar-timeonly">
            <!---->
                <input autocomplete="off" type="text" class="ng-tns-c28-14 calendar-field-input time-input ui-inputtext ui-widget ui-state-default ui-corner-all ng-star-inserted" placeholder="Enter time"><!---->

            <!---->
        </span>
    </p-calendar>

有人可以帮助我吗?

标签: javaselenium-webdriver

解决方案


  1. 您的选择器假设一些<div>
  2. 您的 HTML 代码不包含任何<div>,但它包含<input>很可能包含您要查找的信息的

所以尝试类似:

String date = driver.findElement(By.xpath("//input[@placeholder='Enter time']")).getAttribute("value");

这将获取关联输入的值属性

甚至:

String date = driver.findElement(By.xpath("//p-calendar[@placeholder='Enter time']")).getAttribute("innerText");

这种方法将获得整个标签的innerText属性p-calendar

更多信息:


推荐阅读