单击带有Selenium的闪光按钮

时间:2011-09-26 18:32:32

标签: selenium selenium-rc

我正在用 Selenium RC(在C#上)为我们的项目编写一些测试,它使用Ext.NET,一切都很好,在我遇到事实之前,“上传”用于上传文件的按钮是在 Flash 上创建的。 插入如下:

<embed width="63" height="30" align="middle" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="opaque" allowscriptaccess="sameDomain" name="adaxuploaderaddon1317040891508" bgcolor="#FFFFFF" quality="high" src="/CuteWebUI_Uploader_Resource.axd?type=file&file=uploader10.swf&_ver=1317040891509" scale="exactfit" onerror="adaxuploaderaddon1317040891508_onerror()" style="z-index: 123454; width: 63px; height: 30px; opacity: 0.01; background-color: transparent;">

所以,起初我试过这个:

selenium.Click("//embed[contains(@name, 'adaxuploaderaddon')]

当然,它没有用:)然后我尝试了几种变体,比如使用 mouseDown,mouseUp ,使用 clickAt ,位置元素与css (css = embed) - 但仍然没有运气。

谷歌人说,用Javascript点击按钮是可能的,但我没有找到任何好的例子。

之前有人遇到过这个问题吗?

提前致谢。

3 个答案:

答案 0 :(得分:1)

您可以与&#39; IJavaScriptExecutor&#39; &安培; &#39; ExecuteScript&#39;并启动你的闪存(有关详细信息,请搜索ExternalInterface)。例如,我带一个youtube页面,暂停视频:

 IWebDriver driver = new ChromeDriver();
 driver.Navigate().GoToUrl("https://www.youtube.com/watch?v=2ac4hKSfQ9s");
 driver.Manage().Window.Maximize();

 ((IJavaScriptExecutor)driver).ExecuteScript("var movie = window.document.getElementById('movie_player');"+
                    "console.log(movie);"+
                    "movie.pauseVideo();");
 driver.Quit();

所以,这是一个解决方案,但在这里你不点击,而是点击直接调用AS3功能。

希望有所帮助:)

答案 1 :(得分:0)

您可以使用flashvars与嵌入的swf文件进行通信。

答案 2 :(得分:0)

你能检测到上传按钮吗? 如果不是在调用用于flash上​​传按钮的flash的javascript中使用object-id或class-id。希望这可行。