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 时无法单击“获取数据”按钮