如何处理php-webdriver中“过时的元素引用:元素未附加到页面文档”错误中的致命错误?

我需要从加密货币市场读取卖价/买价。但是当市场过于拥挤时就会发生“陈旧元素错误”。


我使用 facebook/php-webdirver, Selenium Stand Alone Server 3.9.1.jar 和 chromeDriver 和 PHP 7.1 。


这是我第一次尝试选择数据:


$driver->findElements(WebDriverBy::xpath("//tr[@class='price-level']//td[@class='bid-price']"));

它的最后一个:


$driver->wait()->until(WebDriverExpectedCondition::presenceOfAllElementsLocatedBy(WebDriverBy::xpath("//tr[@class='price-level']//td[@class='bid-price']")));

第一个问题是我是否以正确的方式获取这些快速变化的数据(如股票市场或加密货币市场)? 加密货币 BID-ASK 表截图 - 来自 Bitz Bitz Cryptocurrency 实时 BID-ASK 表


第二个是为什么当我使用下面的代码来避免致命错误时,什么也没发生,致命错误总是发生?


try{

$asks = $driver->findElements(WebDriverBy::xpath("//tr[@class='price-level']//td[@class='ask-price']"));

}catch(StaleElementReferenceException $e)

{

echo 'Error Occurred';

}


Helenr
浏览 164回答 1
1回答

偶然的你

最后在 PHP 上花了一个多星期后,我决定改变我的方式。我回顾了其他语言方法。Js 在每周下载量中排名第一。我首先尝试使用Selenium-WebDriver库,每周下载量超过 140 万次。好的,但我不能使用这个。实际上我不喜欢它是出于个人原因!另一个名为“WebDriverIO”的著名 JS 网页抓取库也不是我想要的!我以前从未使用过 NodeJS 和 NPM,我找不到快速安装或快速运行它的方法并且很专业。我尝试了第二次 Python,结果很好:) 启动速度非常快,有很多可读文档可以找到您的目标,还有很多人可以回答您的问题 Python 语法与 PHP 太相似,您可以像连接 MySQL 一样轻松曾经在 PHP 中完成过。Python 3.7 with Selenium for python帮助我在 10 小时内完成了我的应用程序(包括从零开始学习 Python)。终于我的应用程序像一个魅力一样工作,我真的很高兴:) 现在我有一个由 HTML/JS(jQueryAjax) 编码的界面 + 服务器上的数据库连接来提供我的 fontend + Python 脚本来抓取和感受 DB。Try-Catch 仍然无法在 facebook/php-webdriver Php 中工作,但现在谁在乎!
打开App,查看更多内容
随时随地看视频慕课网APP