Нажав на кнопку вспышки с Selenium - PullRequest
2 голосов
/ 26 сентября 2011

Я пишу несколько тестов с 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 , элемент location с css ( css = embed) - но все же не повезло.

В Google люди говорят, что можно нажать кнопку с помощью Javascript, но я не нашел хороших примеров.

Кто-нибудь сталкивался с этой проблемой раньше?

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 16 апреля 2015

вы можете общаться с 'IJavaScriptExecutor' & 'ExecuteScript' и управлять вашей флеш-памятью (для получения более подробной информации ищите 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 при нажатии.

Надеюсь, чтопомощь:)

0 голосов
/ 13 октября 2011

вы можете обнаружить кнопку загрузки? если нет, используйте идентификатор объекта или идентификатор класса в javascript, который вызывает flash, используемый для кнопки загрузки flash. Надеюсь, это может сработать.

0 голосов
/ 26 сентября 2011

Вы можете использовать flashvars для связи со встроенным SWF-файлом.

...