1

我有以下代码,我试图从(data-id)中提取特定属性。我是使用硒的新手,并且已经为此痛苦了一天多。

为了为此添加上下文,我将向您介绍我正在努力实现的目标。

我有一个有拍卖的网页,拍卖有一个 ID,拍卖中的所有物品都有唯一的 ID,但都链接到原始拍卖 ID。我正在尝试提取元素的“data-id”属性,但是我还没有弄清楚如何。这是我试图从中获取 id 的代码片段。

<div class="dropdown open">
  <a class="dropdown-toggle form-control" href="#" data-toggle="dropdown">
  <ul class="dropdown-menu dropdown-menu-form" role="menu">
    <li id="liAuction4c42556772376a443736343d">
      <label class="checkbox">
        <input id="chkAuction4c42556772376a443736343d" class="auction" type="checkbox" data-caption="09-10-2015 10:30:00" data-id="4c42556772376a443736343d" checked="checked"/>
09-10-2015 10:30:00
      </label>
    </li>
  </ul>
</div>

我已经在许多论坛上搜索了整个谷歌,但没有找到适合我的解决方案,否则我不会发布问题并且看起来像一个完整的新手。

我试图使用 .getAttribute 但是我遇到了一些问题并且代码从未编译过,我想我没有正确地做一些事情。

String dataID = selenium.findElement(By.xpath("//*[starts-with(@id, 'liAuction')]")).getAttribute("data-id");

当我尝试上述操作时,“findElement”部分带有红色下划线,并且我收到以下消息,

“对于 Selenium 类型,方法 findElement(By) 未定义”。

如果我改变父母的身份,看起来像这样;

String dataID = selenium.findElement(By.xpath("//*[starts-with(@id, 'liAuction')]").getAttribute("data-id"));

“findElement”不再带下划线,但是现在“.getAttribute”部分带有红色下划线,并且我收到以下消息,“方法 getAttribute(String) 未定义类型 By”

我真的很感激能得到一些帮助,因为我要把我的笔记本电脑扔出窗外,我真的不想丢失我的所有文件。

提前致谢

托尼

4

4 回答 4

2

您可以使用该getAttribute方法。

首先找到输入元素,然后提取data-id:

WebElement inputElement = selenium.findElement(By.id("chkAuction4c42556772376a443736343d"));
String data-id = inputElement.getAttribute("data-id");
于 2015-10-07T10:38:40.857 回答
1

感谢您对这些人的帮助,没想到这么快就得到了答案。

我需要使用以下行来检索元素的“data-id”属性。

String dataID = selenium.getValue("//input[@id='chkAuction4c42556772376a443736343d']/@data-id");

这最终比最初想的要容易得多,我要感谢@Shubham Jain 的帮助,他的建议指出了我需要去的地方。

我希望这对将来的其他人有所帮助

于 2015-10-07T11:19:40.947 回答
1

在 xpath 下使用:-

//input[@id='chkAuction4c42556772376a443736343d']/@data-id

然后使用: -

String dataID = selenium.findElement(By.xpath("//input[@id='chkAuction4c42556772376a443736343d']/@data-id")).gettext();

完整代码:-

static WebDriver driver=null;
    public static void main(String[] args) {
         driver = new FirefoxDriver();
         driver.get("URL");
         String dataID = driver.findElement(By.xpath("//input[@id='chkAuction4c42556772376a443736343d']/@data-id")).gettext();
         System.out.println(dataID);
}

希望它会帮助你:)

于 2015-10-07T10:25:19.873 回答
0

嗨,我建议您使用以下代码。它会工作得很好。

WebElement element = selenium.findElement(By.xpath("//input[@class='auction']"));
String dataId= element..getAttribute("data-id");

细节

我正在使用以下 xpath 识别对象//input[@class='auction']并将其保存到WebElement变量中。

然后通过使用getAttribute()im 获取字符串data-id

于 2015-10-07T11:06:55.610 回答