问题标签 [browser-automation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1735 浏览

ajax - 自动测试 AJAX Web UI 时使用延迟的替代方法

我很快将致力于 AJAX 驱动的网页,这些网页具有从 Web 服务 (WCF) 生成的大量内容。

我过去测试过这种东西(并且发现它很容易),但没有这种级别的动态内容。

我正在使用 Visual Studio 2008 在 .NET 3.5 中进行开发。我设想在以下环境中进行此测试:

  1. 测试驱动.NET
  2. MBUnit(虽然这不是单元测试)
  3. 某种控制浏览器的自动化工具(也许是 Selenium,虽然它可能是 SWEA 或 Watin。我在想 IE、Firefox,可能还有 Opera 和 Safari。)

过去我在测试浏览器时使用过延迟。我不是特别喜欢这样做,而且会浪费时间。

有什么经验和实践可以比使用等待做得更好。也许引入回调和函数式编程来运行测试?


注释 1. 查看前 3 个回复后的详细信息。

1) 感谢 Alan、Eran 和 marxidad,您的回复让我走上了获得答案的道路,希望不会花费太多时间。

2) 另一个细节,我使用jQuery来运行 Ajax,所以这不是在 Asp.NET AJAX 中构建的。

3)我发现一篇文章很好地说明了这种情况。它来自http://adamesterline.com/2007/04/23/watin-watir-and-selenium-reviewed/

3.1) Selenium示例(这个和下一个,WatiN,代码示例没有显示在原始网页中(在 IE 或 Firefox 上),所以我已经提取它们并在此处列出它们。)

3.2) WatiN样本

3.3) 如果您查看这些显然等效的示例,您会发现 WatiN 示例已经抽象掉了 waits

3.4) 然而,WatiN 可能需要额外支持由 Ajax 调用更改的值,如http://watinandmore.blogspot.com/2008/01/using-watin-to-test-select-lists-in.html中所述。在那篇文章中,页面被赋予了一个额外的字段,可用于合成更改的事件,如下所示:

4)现在我所追求的是一种方法,可以在没有合成事件的情况下执行我们在 WatiN 代码中看到的操作。这可能是一种直接挂钩事件的方法,例如更改的事件。我也不会遇到回调问题,尽管这可能会改变测试的编码方式。我还认为,随着 C# 3、VB 9 和 F# 中的新功能的影响开始深入(并且不介意对此进行探索),我们将看到编写测试的替代方法。

5) marxidad,我的来源没有来自 WebAii 的样本,所以我对这个看起来很有趣的工具没有任何评论。


注释 2. 2008-09-29。经过一些独立于此页面的反馈。

5) 我试图为上面的 WatiN 示例代码获取更完整的源代码。不幸的是,它不再可用,链接已失效。这样做时,我注意到 DSL,大概是在网页和自动化工具之间映射的模型。我没有找到这方面的细节。

6) 对于 WebAii,建议使用这样的代码(未经测试):

6)从代码中我可以清楚地避免等待和延迟,使用一些框架,但我需要花更多的时间来看看 WatiN 是否适合我。

0 投票
4 回答
668 浏览

.net - 如何在 .NET 中自动化 Web 代理以进行单元测试(包括设置和拆除)?

遵循 Jonathan Holland 在他对我之前的问题的评论中的建议:.NET 中有没有办法以编程方式监听 HTTP 流量?对于我真正想知道的问题,我提出了一个单独的(但不完全是重复的)问题:

如何在 .NET 中自动化 Web 代理以进行单元测试(包括设置和拆除),以监视来自浏览器的 HTTP 流量(尤其是请求页面上的图像、脚本和 XmlHttpRequest)?

我更喜欢零设置(所以没有在 Windows 上安装 Fiddler),可以说,所有东西都可以从程序集中解包、部署,然后无痕迹地删除。

0 投票
3 回答
5016 浏览

internet-explorer - 如何配置 IE7 以下载文件类型而不是在浏览器中打开

我写了一个下载文件的 watir 脚本。它下载的文件之一具有 .dcf 扩展名。几个月前,在我的机器上,我更改了某处的设置,以便 .dcf 文件提示下载(“您要打开还是保存此文件?”)而不是在浏览器中打开。这是我想要的行为。我正在使用 XP Pro/IE7。

我现在正在设置一台专用的测试机器,但似乎找不到我在我的机器上所做的配置选项 - 这很容易找到,我没有记下它。我现在找到的所有解决方案要么是更改下载本身,要么是修改注册表。我正在从浏览器/IE 级别的客户端角度寻找一些东西。

0 投票
2 回答
920 浏览

testing - 如何使用 Selenium 测试使用 openid 登录

有没有办法使用 Selenium 测试登录到具有开放 ID 的站点?

在 Selenium 中,所有测试都存在于服务器中,因此一旦在网页的相应字段中填写了 open id URL,我就会被带到第 3 方网页以输入凭据,并且我的测试无法再运行。

有没有解决的办法?

0 投票
4 回答
8094 浏览

firefox - 如何从 OS X 上的脚本远程控制 Firefox

我需要编写一些访问某些网站的脚本。来自命令行的脚本会获取一些页面、发布一些表单、屏幕抓取一些信息等。

它不能真正成为像libwww-perl这样的库“浏览器” ,因为某些步骤可能需要用户交互(验证码、仅Ajax表单、任何交互意外等)。

我能想到的最实用的方法是在 Firefox 中远程打开一个选项卡,然后将 JavaScript 代码注入其中,这有点像GreasemonkeySelenium所做的。它不一定必须用于 Firefox,如果更容易,它可以是不同的浏览器。

那么最好的方法是什么?

0 投票
2 回答
3790 浏览

vb.net - 将 VB.NET 代码转换为 VBScript

我有这段 VB.NET 代码要转换为 VBScript。它基本上启动 Microsoft Word,显示打开对话框并邮件合并选定的文档。任何帮助将不胜感激。

0 投票
15 回答
107929 浏览

python - 如何使用python自动浏览?

假设,我需要在特定网站上执行一组程序,例如填写一些表格,单击提交按钮,将数据发送回服务器,接收响应,再次根据响应做一些事情并将数据发送回服务器的网站。我知道 python 中有一个 webbrowser 模块,但我想在不调用任何 web 浏览器的情况下执行此操作。它必须是一个纯脚本。

python中是否有可用的模块,可以帮助我做到这一点?
谢谢

0 投票
2 回答
578 浏览

testing - Java 中的自动化 Web 测试工具

我想测试一个基于 Ajax 的 Web 应用程序。我想用 Java 编写测试脚本并模拟 Web 浏览器。

Web 浏览器的模拟非常重要,因为我在 Web 应用程序中使用了非常高级的 Ajax 库,例如 jQuery。

关于我应该如何进行的任何想法?

0 投票
2 回答
3234 浏览

c# - Internet Explorer 能否以编程方式使用 Socks 代理?

我希望 C# 代码在 Internet Explorer 中使用 Socks 5 代理。我有 http 代理的代码,但该代码不适用于 Socks 代理。

有人有这样的代码吗?请提供一些指示。

我基本上是在 C# 中进行 IE 自动化,我需要使用 IE 使用 socks 代理的代码。

0 投票
5 回答
3306 浏览

python - 什么是 Python 最好的浏览器自动化工具?

我想编写以下脚本:给定一个文本文件,其中包含要在某个站点上执行的操作列表,它将使用一些浏览器(可能是 IE,因为我对其他可驱动的浏览器一无所知)CSS 渲染和JS 执行功能来模仿用户在网站上执行这些操作。

所以我找到了这个页面和它的“网络测试”部分,它列出了:

  • 帕米
  • PYXPCOM
  • 风车

后两者在本地主机上运行某种服务器(这似乎不是一个合适的决定)。
Pamie 有一些有史以来最糟糕的文档,他们网站上的许多“建设中”页面最后一次更新是在 2006 年。
而且 PyXPCOM 似乎不是专门为 FF 创建的。我可能是一个糟糕的谷歌人,但我仍然没有找到一个像使用 FF 这样的使用 PyXPCOM 的好例子。

出于我的目的,您更喜欢哪种方式来引导浏览器,为什么?TIA

更新
我需要能够在页面上呈现 JavaScript。我想使用一些基于服务器的库不是一个好的解决方案,因为它一次仅限于一个浏览器实例,所以我无法将 2 个浏览器实例设置为 2 个不同的代理,而不必2台服务器(这是正确的吗?)。