今天我在Java Selenium Binding方面的stackoverflow中遇到了一个有趣的问题,我试图通过WATIR找到解决方案,但我在这里不能成功,
我尝试从网页上读取手机号码,这是网页
<span class="telnowpr">
<a class="tel mtel">
<span class="mobilesv icon-ba"/>
<span class="mobilesv icon-ts"/>
<span class="mobilesv icon-oqp"/>
<span class="mobilesv icon-wx"/>
<span class="mobilesv icon-nlm"/>
<span class="mobilesv icon-ts"/>
<span class="mobilesv icon-ji"/>
<span class="mobilesv icon-ji"/>
<span class="mobilesv icon-ji"/>
<span class="mobilesv icon-fde"/>
<span class="mobilesv icon-fde"/>
<span class="mobilesv icon-nlm"/>
<span class="mobilesv icon-lk"/>
</a>
,
<a class="tel mtel">
<span class="mobilesv icon-ba"/>
<span class="mobilesv icon-ts"/>
<span class="mobilesv icon-oqp"/>
<span class="mobilesv icon-wx"/>
<span class="mobilesv icon-nlm"/>
<span class="mobilesv icon-ts"/>
<span class="mobilesv icon-ji"/>
<span class="mobilesv icon-ji"/>
<span class="mobilesv icon-ji"/>
<span class="mobilesv icon-fde"/>
<span class="mobilesv icon-fde"/>
<span class="mobilesv icon-nlm"/>
<span class="mobilesv icon-ikj"/>
</a>
</span>
每个跨度都有一个数字,我可以在移动萤火虫工具箭头时看到,但是html中的数字不在内部但是它出现在页面中。我试图通过价值和文本提取,但到目前为止还没有成功,到目前为止我还没有看过这样的页面。
代码
b = Watir::Browser.new @driver
b.goto 'https://www.justdial.com/Ahmedabad/Knife-Fork-Restaurant-Shah-E-Alam-Tollnaka-Opposite-Swaminarayan-College-Shah-Alam/079PXX79-XX79-170524174654-D3J2_BZDET?xid=QWhtZWRhYmFkIEFmZ2hhbmkgUmVzdGF1cmFudHM='
p b.span(class: 'telnowpr').text
实际打印逗号的,这会打印一个逗号,因为逗号出现在两个<a>
之间,但我不知道如何显示所有数字。谁能帮我?
答案 0 :(得分:0)
他们似乎使用图标来显示数字而不仅仅是数字。我认为这是为了防止僵尸程序和自动化软件收集垃圾邮件的所有数字。
每个数字似乎都有一个唯一的css类,那么为什么不创建一个函数来检查类中的文本并返回它对应的数字?
答案 1 :(得分:0)
尝试以下内容:
List<WebElement> allSpans = driver.findElements(By.cssSelector("ul#comp-contact span.telnowpr >a > span.icon-acb"));
System.out.println(allSpans.size());
//for(WebElement item : allSpans) {
String script = "return window.getComputedStyle(document.querySelector('ul#comp-contact span.telnowpr >a > span.icon-acb'),':before').getPropertyValue('content')";
JavascriptExecutor js = (JavascriptExecutor) driver;
String content = (String) js.executeScript(script);
System.out.println("Value : " + content);
//}
这是针对下图中显示的单个span元素,您需要为
下的所有<span>
元素执行此操作
<ul id="comp-contact">