我有一个测试系统,这是一个视频广告发布技术.我需要像1-2分钟一样加载每个视频来投放广告.这些视频在Flash客户端中播放,并像YouTube一样以FLV流形式流式传输.
我之所以需要仅通过浏览器测试它 - 以及其他所有方法都无法正常工作 - 的原因是同时对视频流服务器和广告服务器进行压力测试并实时显示广告.
我使用过Selenium,WatiN,Automation Anywhere和许多其他自动化工具.但是,当我尝试在我的机器上启动10000个浏览器(32GB RAM,16核CPU)时,他们都无法完成这项工作.
使用Selenium,我能够启动目前为止最大的FireFox实例,但这仍然太低:一半实例不运行测试.
有关Selenium的任何建议吗?
我已经做了无数谷歌搜索.
尽管有这些承诺,我还是找不到一篇关于如何使用WatiN自动化Chrome的文档.
有人可以帮忙吗?
[ 为了清晰起见再次修订 ]
我有一个与网站交互的C++程序.该网站是特定于IE的,我的程序也是如此.
我以普通的方式连接到IE的运行实例(进程外 - 请参阅代码).一旦我得到了IWebBrowser2,我就可以获得IHTMLDocument2并与各个IHTMLElement对象进行交互,填写字段并单击按钮.
但是如果网页上有调用window.showModalDialog的 javascript ,我就陷入困境:我需要与弹出窗口中的HTML元素进行交互,就像其他页面一样; 但我似乎无法得到它IWebBrowser2.
弹出窗口始终标题为"网页对话框",是一个Internet Explorer_TridentDlgFrame包含类型的窗口Internet Explorer_Server.但是,Internet Explorer_Server当它是一个普通的IE实例时,我无法从窗口获取IWebBrowser2 .
我能得到的IHTMLDocument2Ptr,但是当我试图让IWebBrowser2我得到HRESULT的E_NOINTERFACE.
代码是非常标准的东西,如果它是一个"正常的"IE窗口,它可以正常工作
IHTMLDocument2Ptr pDoc;
LRESULT lRes;
/* hWndChild is an instance of class "Internet Explorer_Server" */
UINT nMsg = ::RegisterWindowMessage( "WM_HTML_GETOBJECT" );
::SendMessageTimeout( hWndChild, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000,
(DWORD*)&lRes );
LPFNOBJECTFROMLRESULT pfObjectFromLresult =
(LPFNOBJECTFROMLRESULT)::GetProcAddress( hInst, "ObjectFromLresult" );
if …Run Code Online (Sandbox Code Playgroud) 什么是Selenium相当于在Watir中附加现有的浏览器?
brw = Watir::IE.attach(:title, "Google")
Run Code Online (Sandbox Code Playgroud) 我将很快开发AJAX驱动的网页,其中包含从Web服务(WCF)生成的大量内容.
我过去曾经测试过这种东西(并且很容易找到),但是没有这种动态内容.
我正在使用Visual Studio 2008在.NET 3.5中进行开发.我设想在以下测试:
在过去,我在测试浏览器时使用了延迟.我不是特别喜欢那样做,浪费时间.
与使用等待相比,有更好的经验和做法.也许引入回调和函数式编程来运行测试?
注释1.在回顾前3个回复后的更多细节.
1)感谢艾伦,伊兰和马克西德,你的回复让我在赛道上得到答案,希望没有花太多时间.
2)另一个细节,我使用jQuery来运行Ajax,所以这不是在Asp.NET AJAX中构建的.
3)我发现了一篇很好地说明情况的文章.它来自http://adamesterline.com/2007/04/23/watin-watir-and-selenium-reviewed/
3.1) Selenium Sample(这个和下一个,WatiN,代码示例没有显示在原始网页上(在IE或Firefox上)所以我已经提取它们并在这里列出它们.)
public void MinAndMaxPriceRestoredWhenOpenedAfterUsingBackButton(){
OpenBrowserTo("welcome/index.rails");
bot.Click("priceDT");
WaitForText("Price Range");
WaitForText("515 N. County Road");
bot.Select("MaxDropDownList", "$5,000,000");
WaitForText("Prewar 8 Off Fifth Avenue");
bot.Select("MinDropDownList", "$2,000,000");
WaitForText("of 86");
bot.Click("link=Prewar 8 Off Fifth Avenue");
WaitForText("Rarely available triple mint restoration");
bot.GoBack();
Thread.Sleep(20000);
bot.Click("priceDT");
WaitForText("Price Range");
Assert.AreEqual("$5,000,000", bot.GetSelectedLabel("MaxDropDownList"));
Assert.AreEqual("$2,000,000", bot.GetSelectedLabel("MinDropDownList"));}
Run Code Online (Sandbox Code Playgroud)
3.2) WatiN样本
public void MinAndMaxPriceRestoredWhenOpenAfterUsingBackButton(){
OpenBrowserTo("welcome/index.rails");
ClickLink("Price");
SelectMaxPrice("$5,000,000");
SelectMinPrice("$2,000,000"); …Run Code Online (Sandbox Code Playgroud) testing ajax functional-programming callback browser-automation
如果使用wait_until非常清楚(我在使用本机Webdriver方法创建测试时使用了这样的方法),而不是新的同步方法(抱歉:)).我已经阅读了关于为什么不推荐使用wait_until的主题,我已经阅读了有关该文章的文章,我已经阅读了带有方法描述的文档,并且还阅读了描述所在的代码.但我没有找到任何示例或教程如何使用此方法.
请允许任何人提供我(也可能是其他人)可以看到并学习如何使用此方法的少数情况
例如案例
expect(actual).to equal(expected)
Run Code Online (Sandbox Code Playgroud)
我应该在哪里"放"同步方法才能在超时过后获得负面异常?
UPD:对于有兴趣的人请查看以下链接:
http://www.elabs.se/blog/53-why-wait_until-was-removed-from-capybara
https://github.com/jnicklas/capybara/blob/master/lib/capybara/node/base.rb#L44
我知道这有点违背无头自动化的目的,但是......
我已经在无头模式下使用 Selenium 和 Chromedriver 运行自动化测试。我更愿意让它保持无头运行,但偶尔,它会遇到一个确实需要查看和交互的错误。是否可以渲染无头会话并与之交互?也许通过在非无头浏览器中复制无头浏览器?我可以通过远程调试进行连接,但开发工具似乎不允许我查看渲染的页面或与任何内容交互。
我可以截取屏幕截图,这很有帮助。但我确实在寻找交互的能力——有一些拖放元素不能很好地与 Selenium 配合使用,偶尔会导致问题。
给出一个简单的页面:
<form>
<input type="email">
<button>click</button>
</form>
Run Code Online (Sandbox Code Playgroud)
如果我在非电子邮件的文本字段中输入任何内容并单击该按钮,Please enter an email address则会显示消息.
有没有办法检查是否使用Selenium或Watir显示消息?据我所知,浏览器DOM中没有出现任何新内容.
由于页面使用的是构建在浏览器功能中的电子邮件检查,因此检查出现错误消息是否有意义?它与检查浏览器滚动条是否有效处于同一级别.我们不再检查Web应用程序,而是检查平台(浏览器).
此处关于SO的早期相关问题是:如何使用黄瓜测试HTML5页面中的错误条件?
我正在尝试使用Splinter的Firefox驱动程序来测试一些响应式设计.
当然,这需要我调整浏览器窗口的大小.我在文档中找不到任何关于浏览器大小调整的内容.
我怎样才能做到这一点?
from splinter import Browser
with Browser() as browser:
# How do I set the browser size?
Run Code Online (Sandbox Code Playgroud) How can we automatically toggle Dark Mode at predetermined times?
Every day, around 5 PM, I switch on the dark mode of the Dark Reader Chrome extension. I toggle it off again the next morning to get more bright light in the morning.
As of now, I have remind myself everyday to hit the <Alt>+<Shift>+<D>-shortcut that I have configured in Google Chrome (chrome://extensions/shortcuts):

browser google-chrome browser-automation google-chrome-extension darkmode