我在从网站上获取电话号码时遇到了麻烦。 跨度看起来像,
<span itemprop="telephone" class="hidden" id="telefoon_28836_hidden">010 - 79 53 364</span>
我试过这段代码
telno = driver.findElement(By.xpath("//span[@itemprop='telephone']")).getText();
我的价值空虚。
这是在web驱动程序加载页面之后的源代码看起来如何。
<div style="float: left; clear: both; padding-right: 7px;">Adres:<br> </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;"> <br>Telefoon:</div>
<div style="float: left; color:#c71d22; width: 400px;"> <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>
如果我使用
straat = driver.findElement(By.xpath("//span[@itemprop='streetAddress']")).getText();
我得到“Mathenesserweg 49A BG”它的工作正常,但我认为因为电话号码的类“隐藏”我得到空值。 有人可以帮我解决这个问题。 谢谢。
答案 0 :(得分:3)
创建Selenium是为了模仿用户输入。用户无法看到隐藏的元素,这就是您无法找到它的原因。
您应直接在文档上查询以查找元素
String script = "return document.getElementById('telefoon_28836_hidden').innerHTML";
String telno = (String) ((JavascriptExecutor) driver).executeScript(script)