【问题标题】:Javascript to get hidden text value from website using Selenium web driver使用 Selenium Web 驱动程序从网站获取隐藏文本值的 Javascript
【发布时间】:2014-02-20 13:53:27
【问题描述】:

如何在字符串变量中获取此电话号码。

<span itemprop="telephone" class="hidden" id="telefoon_28836_hidden">010 - 79 53 364</span>

我尝试了这段代码但没有成功。

JavascriptExecutor jse = (JavascriptExecutor)driver;
 String script = "return   document.getElementByXPath('//span[@itemprop='telephone']').getText();";
 String telno1 = ((JavascriptExecutor) driver).executeScript(script).toString();

String telno1 行出现此异常

ErrorHandler$UnknownServerException: missing ) after argument list

请帮忙谢谢

【问题讨论】:

    标签: javascript selenium


    【解决方案1】:

    你可以用这个,

    String theTextIWant = ((JavascriptExecutor) driver).executeScript("return arguments[0].value;",driver.findElement(By.xpath("//span[@itemprop='telephone']")));
    

    您只需使用 javascript 提取输入字段的 value 属性。如果它是 div 或 textarea,那么您希望使用 innerHTML、innerText 或 textContent 属性。如下图,

    String theTextIWant = ((JavascriptExecutor) driver).executeScript("return arguments[0].innerHTML;",driver.findElement(By.xpath("//span[@itemprop='telephone']")));
    

    【讨论】:

      【解决方案2】:

      你在这里混合了很多东西。您不能只是复制/粘贴 Selenium 代码并期望它在 JavaScript 中工作。

      我的建议是首先 使用Selenium 的XPath 机制找到元素,然后然后 将其传递到JavaScript 字符串中。您只是在针对 Selenium 的 API 工作,因为它允许您以多种方式查找元素,并且如果您为您将其转换为可以在 JavaScript 中使用的对象想要。

      JavascriptExecutor jse = (JavascriptExecutor)driver;
      WebElement element = driver.findElement(By.xpath("//span[@itemprop='telephone']"));
      jse.executeScript("return arguments[0].text", element);
      

      (未经测试,未经验证的代码,我没有Java IDE来处理,可能无法编译)

      【讨论】:

        【解决方案3】:

        内部 xpath 字符串似乎没有正确形成。这是因为使用了“单引号”:

        尝试替换:

        String script = "return   document.getElementByXPath('//span[@itemprop='telephone']').getText();";
        

        与:

        String script = "return   document.getElementByXPath(\"//span[@itemprop='telephone']\").getText();";
                                                              ^                              ^
        

        【讨论】:

        • 感谢您的建议,我刚刚尝试过,但现在我收到 document.getElementByXPath is not a function 错误
        • 您是否定义了任何“getElementByXpath”函数?我认为没有任何名为“getElementByXpath”的 OTB 函数。如果您使用 Selenium for JS (WebDriverJS),那么它们还定义了其他功能。
        【解决方案4】:

        试试这个

        driver.findElement(By.id("telefoon_28836_hidden")).getText();
        

        如果可行,请告诉我们。

        【讨论】:

          【解决方案5】:

          这会导致错误:document.getElementByXPath is not a function

          请改用document.evaluate。这个linkyckart的回答很有帮助。

          希望这会有所帮助!

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-01-19
            • 1970-01-01
            • 1970-01-01
            • 2015-06-12
            • 2014-05-25
            • 1970-01-01
            • 1970-01-01
            • 2019-01-29
            相关资源
            最近更新 更多