【发布时间】:2018-04-14 03:19:44
【问题描述】:
我的问题是如何执行单击元素以从服务器响应中获取数据?
算法:
1)点击div元素
<div class="contact-button link-phone {'path':'phone', 'id':'z8rpg', 'id_raw': '519183738'} atClickTracking contact-a" data-rel="phone">
<i data-icon="phone"></i>
<strong class="xx-large"> TEXT1 </strong>
</div>
2) 向服务器发送请求
3) 服务器发送带有修改文本的响应。
所以我需要得到修改后的文本(代码中的 TEXT1)。我已经这样做了:
HtmlUnitDriver driver = new HtmlUnitDriver(BrowserVersion.CHROME);
driver.get("https://www.olx.ua/obyavlenie/audi-a4-1998-IDzaH8c.html#c890172227;promoted");
System.out.println("Title: " + driver.getTitle());
WebElement webElement = driver.findElement
(By.xpath("//*[@id=\"contact_methods\"]/li[2]/div"));
webElement.click();
Thread.sleep(3000);
webElement = driver.findElement
(By.xpath("//*[@id=\"contact_methods\"]/li[2]/div"));
phone = webElement.getText();
更新:
据我了解,从服务器 div 元素获得响应后,正在重新加载,而不是整个页面。 我需要等到 div 元素完成重新加载。 使用调试模式我注意到奇怪的事情。在这一行:
phone = webElement.getText();
webElement 的状态:readyState_ = "loading"
【问题讨论】:
-
AFAIU : 你想导航到olx.ua/obyavlenie/… 网站并想点击 div。一旦你点击那个 div 就会弹出两个电话号码,你想找回这些号码吗?
-
是的,你是对的。我正在研究解析器。我正在获取除电话号码以外的所有数据。
-
过段时间我会分享代码!
标签: java html selenium htmlunit-driver