使用 JavaScript 实现的列表(而不是链接)可以更快速地访问网站项目详细信息

使用 JavaScript 实现的列表(而不是链接)可以更快速地访问网站项目详细信息

设想

用户访问一个网页,该网页显示了物品清单并且用户希望访问列表中的每个项目. 该网站并非每个项目都有一个唯一的 URL,而是采用以下方式实现:每个项目都运行 javascript(不是链接)显示商品详情。单击后,javascript 运行并将用户带到特定商品详情,离开商品列表。现在用户想转到列表中的下一个商品,但这需要返回商品列表。网站实施细节当然不受用户控制。

  • 问题 1:许多网站需要很长时间来重新生成列表。
  • 问题 2:用户必须协调已经访问过的项目,因此选择下一个项目可能需要很长时间。

在使用唯一 URL 实现的站点中,解决方案很简单:右键单击 URL 并选择“在新选项卡中打开链接”,对所有项目重复此操作,然后检查每个打开的选项卡以获取所需的信息。

在使用 javascript 实现的网站中,此技术不起作用,因为可点击元素不是链接,所以不存在“在新选项卡中打开链接”,而是导致 javascript 运行,然后转发到详细信息页面。

问题

按照上面的场景实现的话,有没有办法可以更快速的访问列表中所有的详细信息页面?

实验

我尝试了几种方法,因为我在访问许多不同的网站时经常遇到这个问题。有一种方法有时有效,但不能指望,那就是检查源代码,看看列表项 HTML 源代码中是否有一个键也出现在详细信息页面 URL 中(如Web 开发工具 > 网络)。对于这个问题,我们假设这种方法由于网站实现的原因而不起作用;我发现包含详细数据的 URL 通常只是那些看起来很长的随机字符串之一。虽然检查页面上的 javascript 源代码是可能的,但那时可能已经到了收益递减的地步(需要很长时间才能弄清楚)。

最好有一种方法可以访问在新标签页中打开链接使用 javascript 实现列表项的功能。例如在新标签页中打开 javascript 定义的页面

答案1

听起来您不是在访问网页(传统意义上的),而是在访问网络应用程序。除非这个 Web 应用程序设计有正确的 URL,否则你就没有运气了。这根本不可行,就像您不能打开记事本然后显示字体选择对话框一样。好吧,从技术上讲您可以,但稍后会详细介绍。

好的 Web 应用程序通常使用History.pushState浏览器 API 为所有视图提供适当的 URL。这意味着,即使您点击的可能不是链接,您仍然可以http://www.example.com/items/1234从内容(隐藏元素、元素 ID、属性)或其他内容中猜出目标 URL ()。这些好的 URL 有时也称为永久链接或深层链接。

糟糕的 Web 应用程序根本不使用 URL 或使用不当。这意味着您必须执行部分甚至所有步骤才能获得所需的视图。这是不可能的。尤其是像您所描述的那样,某些交互非常缓慢。

不过,使用 UI 自动化工具还是可以做到的。这些工具的例子,可能单独使用无法帮你完成所有步骤:AutoHotKey、Playwright、Selenium。此外,还可以使用浏览器扩展程序甚至书签小工具来实现这一点。所有这些都需要编程,有时还需要深入研究 Web 应用程序的内部工作原理。

相关内容