如果站点使用 Ajax,如何检查 Selenium WebDriver?
Posted
技术标签:
【中文标题】如果站点使用 Ajax,如何检查 Selenium WebDriver?【英文标题】:How to check with Selenium WebDriver if a site is using Ajax? 【发布时间】:2015-07-27 09:24:16 【问题描述】:我正在一些未知的第三方网站上进行研究和开发,以使用 selenium 获取页面内容。
我应该如何知道网站是基于 Ajax 还是非基于 Ajax。 我不知道未知网站内部的任何数据可以使用 id 或标签名称检查,所以我应该如何检查它是否基于 Ajax。
【问题讨论】:
请阅读 ***.com/help/how-to-ask 并提供更多信息,说明您尝试过的方法和无效的方法 其实这是一个有趣的问题。 “基于 Ajax”是什么意思,如果存在一些 ajax 调用或者它是一个简单的页面应用程序?例如(Angular JS)问题是有很多使用ajax的方法。这是我认为的主要障碍。没有模式.. 这不是一个真正的问题,我会认为你至少先阅读 wiki en.wikipedia.org/wiki/Ajax_(programming)。 第一个,你不应该担心。当未启用 javascript 时,网站被编写为优雅地回退,因此 ajax 不起作用。对于第二个,我认为您可以设置一个代理来路由所有流量。然后分析所有已完成的请求。如果单击应生成页面的元素导致请求未生成完整的 html 页面 (<html>....</html>
),则它是 ajax 请求。
【参考方案1】:
如果我是你,我会设置一个代理并通过它路由所有 WebDriver
流量。在代理中,对于每个请求,我都会解析请求标头并查找标头
X-Requested-With = XMLHttpRequest
Reference
如果你有这个,你可以(相当有信心)说你调用了Ajax
。您可能会错过一些极端情况,但这应该可以帮助您了解其中的大部分情况。
无论如何,您需要考虑 Ajax 调用可能不会在页面加载时完成,它可能需要用户交互来触发这些调用。
您可以尝试使用WebDrivers getPageSource()
方法来解决它,并将某些方法应用于输出,以查找$.get(
和$.post(
和$.ajax(
等模式以及您能想到的所有其他模式。
您可能还对this answer 关于设置代理感兴趣。
【讨论】:
以上是关于如果站点使用 Ajax,如何检查 Selenium WebDriver?的主要内容,如果未能解决你的问题,请参考以下文章
如果'checked'属性不可用于使用isChecked / isSelected,如何使用selenium检查复选框的状态? [复制]
如何允许仅由站点调用 php 文件,而不是 Inspect Element 或 URL
为啥我的 ASP.NET MVC 站点中的此 AJAX 请求会触发预检检查?
python selenium webdriver 怎么 获得 ajax 返回 内容
如何使用无头(gui-less)Selenium WebDriver下载文件
如何识别 ReCaptcha V2 的 32 位数据站点密钥以使用 Selenium 和 Python 请求以编程方式获取有效响应?