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

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

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

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

提前感谢您的帮助!

【问题讨论】:

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

标签: ajax selenium http url


【解决方案1】:

您可以使用 JavaScript 执行器来获取网络数据。请参考https://stackoverflow.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://stackoverflow.com')
for entry in driver.get_log('performance'):
    print(entry)

更多信息请参考帖子python

【讨论】:

  • 谢谢,非常感谢!有没有与此等效的python?
  • Ravi,请在 python 驱动程序创建步骤中添加以下所需功能。 desiredcaps = {'loggingPrefs': {'performance': 'ALL'}}
  • 谢谢!我会试试这个并稍后更新。非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-27
  • 2021-01-02
  • 1970-01-01
  • 2013-04-20
  • 1970-01-01
相关资源
最近更新 更多