Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用selenium获取隐藏跨度的文本值_Java_Selenium Webdriver - Fatal编程技术网

Java 如何使用selenium获取隐藏跨度的文本值

Java 如何使用selenium获取隐藏跨度的文本值,java,selenium-webdriver,Java,Selenium Webdriver,我很难从网站上获得telefoon nummer。 跨度看起来像 <span itemprop="telephone" class="hidden" id="telefoon_28836_hidden">010 - 79 53 364</span> 我得到的是空值 这就是web驱动程序加载页面后源代码的外观 <div style="float: left; clear: both; padding-right: 7px;">Adres:<br>

我很难从网站上获得telefoon nummer。 跨度看起来像

<span itemprop="telephone" class="hidden" id="telefoon_28836_hidden">010 - 79 53 364</span> 
我得到的是空值

这就是web驱动程序加载页面后源代码的外观

<div style="float: left; clear: both; padding-right: 7px;">Adres:<br>&nbsp;</div>
                            <div itemtype="http://schema.org/PostalAddress" style="float: left; color:#c71d22; width: 400px;">
                                <span itemprop="streetAddress">Mathenesserweg 49A BG</span><br>
                                <span itemprop="postalCode">3027 HE</span> <span itemprop="addressLocality"> Rotterdam </span>
                            </div>
                                                            <div style="float: left; clear: left; width: 70px;">&nbsp;<br>Telefoon:</div>
                                <div style="float: left; color:#c71d22; width: 400px;">&nbsp;<br>
                                    <span id="telefoon_28836_visible"><a href="#" class="countStatistieken" id="telefoon_28836" style="color:#c71d22;">Klik hier</a></span>
                                    <span itemprop="telephone" class="hidden" id="telefoon_28836_hidden">010 - 79 53 364</span>
                                </div>
我得到的是“Matheneserweg 49A BG”,它工作正常,但我认为由于telefoon nummer的class=“hidden”,我得到的是空值。 有人能帮我解决这个问题吗。
谢谢。

创建Selenium的目的是激发用户输入。用户看不到隐藏的元素,这就是您找不到它的原因

您应该直接查询文档以查找元素

String script = "return document.getElementById('telefoon_28836_hidden').innerHTML";
String telno = (String) ((JavascriptExecutor) driver).executeScript(script)

这看起来是正确的。您确定在调用Selenium时页面包含给定的HTML代码吗?是否有任何ajax加载使得页面的这一部分一开始就不在这里。或者是否有一个iframe,您必须首先切换到它?对于Java,我遇到了这个问题,BR标记返回为空。我没有使用
.getText()
而是使用了
.getAttribute(“innerHTML”)
,它将返回我要查找的内容,包括任何不可见的HTML或隐藏的文本。谢谢你,但还有一点我认为这将是一个循环,我必须为3000名telefoon nummers执行此操作,有没有使用itemprop=“telephone”的方法但是,有很多方法可以做到这一点,元素ID和它在列表中的编号之间是否有联系?如果有的话,我只需要生成脚本并在for循环中执行它们,以获得我需要的所有数据。如果使用jquery,“$”('span[itemprop=telephone]')将返回该类型的所有元素。(然后您需要对其进行迭代)我仍然忙于解决这个问题,我无法使用Jquery,我尝试了以下代码字符串script=“return document.getElementByXPath('//span[@itemprop='telephone']')。getText();”;字符串telno1=((JavascriptExecutor)driver.executeScript(script.toString();没有solution@Muratcan,这是因为不存在
document.getElementByXPath
。。。另外,您不需要使用JavaScript查找元素。您可以先使用Selenium自己的方法找到它,然后将其传递给其他人。
straat = driver.findElement(By.xpath("//span[@itemprop='streetAddress']")).getText();
String script = "return document.getElementById('telefoon_28836_hidden').innerHTML";
String telno = (String) ((JavascriptExecutor) driver).executeScript(script)