【问题标题】:Scan HTML DOM elements from the webpage and their properties using Selenium WebDriver/Javascript/Java使用 Selenium WebDriver/Javascript/Java 扫描网页中的 HTML DOM 元素及其属性
【发布时间】:2014-04-21 16:09:15
【问题描述】:

场景:Google 主页有 1 个输入字段。但是我下面的程序显示 3 个警报。 我正在努力过滤任何网页上的可见元素(文本框)。需要您的帮助吗? 最终,我希望检索它的属性。

语言:Java/Javascript/Selenium API。

WebDriver driver = new InternetExplorerDriver();
        driver.get("http://google.com");
        driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
        JavascriptExecutor js = (JavascriptExecutor) driver;
        System.out.println(js.executeScript("return document.title"));
        js.executeScript("var allInputs = document.getElementsByTagName('input');"+
        "for(var x=0;x<allInputs.length;x++){"+
        "if(allInputs[x].type == 'text'){" +
        "alert(x)"+
        "}"+
        "}");

【问题讨论】:

  • 请改进您的问题。现在它看起来像“为我做这个”而不是“我试图以这种方式解决它,但我被卡住了,因为(在这里你描述你的问题) "。
  • 谢谢 Pshemo,我不知道游戏规则。这是我的第一篇文章。从现在开始。
  • 这里是游戏规则stackoverflow.com/help/how-to-ask
  • 没问题。只需使用帖子下方的edit 按钮即可提供有关您所面临问题的更多详细信息。
  • 如果有人可以将状态从“暂停”更改为活动请

标签: java html dom selenium


【解决方案1】:

它返回多个的原因是因为页面上有多个输入元素。 submit、checkbox 和 hidden 也是输入元素的类型。

如果您只想要文本字段,请尝试将您的 JS 更改为:

    js.executeScript("var allInputs = document.querySelectorAll('input[type=text]');"+
    "for(var x=0;x<allInputs.length;x++){"+
    "if(allInputs[x].type == 'text'){" +
    "alert(x)"+
    "}"+
    "}");

【讨论】:

    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 2022-11-28
    • 2018-07-02
    • 2014-11-16
    • 2017-04-16
    • 1970-01-01
    相关资源
    最近更新 更多