我的问题是如何执行click元素以从服务器响应中获取数据?算法:
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();
UPDATE :
据我所知,从服务器获取响应div元素正在重新加载,而不是整页 . 我需要等到div元素重新加载完毕 . 使用调试模式我注意到奇怪的事情 . 在这一行:
phone = webElement.getText();
webElement的状态:readyState_ =“loading”
1 回答
Steps taken :
导航至https://www.olx.ua/obyavlenie/audi-a4-1998-IDzaH8c.html#c890172227;promoted
单击屏幕右侧的Показать(span) .
我们点击它后会立即看到两个数字 .
检索这两个数字并在控制台上打印 .
Code: Java + Selenium
试试这段代码,让我知道状态 .
Note : 我正在使用chromeDriver实例来启动chrome浏览器 .
如果您对此有疑问,请与我们联系 .
Update
您可以将此代码与htmlunitDriver一起使用;