Selenium 在按钮单击后获取 http 请求 ajax url

Posted

技术标签:

【中文标题】Selenium 在按钮单击后获取 http 请求 ajax url【英文标题】:Selenium get http request ajax url after button click 【发布时间】:2021-10-12 01:13:42 【问题描述】:

当以编程方式在网页中单击按钮时,我需要获取 http 请求 URL。 我正在使用 selenium 来跟踪按钮,并且正在执行单击按钮。单击按钮时,它会发出一个 http 请求,并且可以在浏览器的网络选项卡中进行跟踪。

一旦我使用 selenium 触发按钮单击,我如何以编程方式获取请求 URL。

我可以用来实现相同功能的任何其他工具或库对我来说也可以。我只需要能够以编程方式单击按钮后获取 URL。这是一个定期更改的动态 URL,目的是通过代码自动执行下载过程。

提前感谢您的帮助!

【问题讨论】:

点击按钮时,您是否也看到了 html 的任何变化? 不确定,但可能有。但是 HTML 中没有 URL。它必须是来自 shadow DOM 内的按钮的 ajax 调用。 【参考方案1】:

您可以使用 javascript 执行器来获取网络数据。请参考https://***.com/a/45859018/5966329 从那里获取请求/响应数据。

DesiredCapabilities d = DesiredCapabilities.chrome();    
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
d.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
WebDriver driver = new ChromeDriver(d);
driver.get("https://www.google.co.in/");
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
LogEntries les = driver.manage().logs().get(LogType.PERFORMANCE);
for (LogEntry le : les) 
  System.out.println(le.getMessage());

Python 等价物:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import 
DesiredCapabilities

caps = DesiredCapabilities.CHROME

caps['goog:loggingPrefs'] = 'performance': 'ALL'
driver = webdriver.Chrome(desired_capabilities=caps)

driver.get('https://***.com')
for entry in driver.get_log('performance'):
    print(entry)

更多信息请参考帖子python

【讨论】:

谢谢,非常感谢!有没有与此等效的python? Ravi,请在 python 驱动程序创建步骤中添加以下所需功能。 desiredcaps = 'loggingPrefs': 'performance': 'ALL' 谢谢!我会试试这个并稍后更新。非常感谢您的帮助!

以上是关于Selenium 在按钮单击后获取 http 请求 ajax url的主要内容,如果未能解决你的问题,请参考以下文章

单击登录按钮后,Ebay 网站挂起 - Selenium Python

在 selenium python 中单击滑块按钮

Selenium 在使用 Python 时无法单击“获取数据”按钮

单击按钮后使用 Selenium 切换到新窗口

单击按钮后切换到打开的新浏览器 [Python][Selenium]

Selenium(Python):单击按钮后,等待所有新元素(可以具有不同的属性)被加载[重复]