How do I bypass the "Flash Camera and Microphone Access" pop-up when using Pepper/PPAPI Flash in Chrome (via Selenium)? -


chrome supports 2 flavors of flash: npapi , ppapi (pepper). these 2 implementations seem handle camera , microphone permissions differently. specifically, ppapi (pepper) not appear honor previous grants of permission.

with npapi, default, first time navigate flash site requests permission use computer's camera , microphone, adobe flash pop-up asks user allow or deny access. allow access, , grant remembered. next time navigate site, permission granted automatically, without pop-up.

when want test ppapi (pepper) flash, specify "--enable-bundled-ppapi-flash" , "--disable-npapi" command-line arguments chrome. in mode, previous grants ignored, , pop-up displayed every time. have not figured out how detect in selenium , click on "allow".

does know how bypass pop-up, either clicking on "allow", or disabling altogether?

thanks.

update: have discovered non-pepper flash stores camera/microphone permissions in file called 'settings.sol', stored in directory specific site requesting access. example, on windows, when host @ 1.2.3.4 requests access, following file created:

c:\users[user]\appdata\roaming\macromedia\flash player\macromedia.com\support\flashplayer\sys#1.2.3.4\settings.sol

note space in "flash player". file local shared object, encoded amf. use python pyamf package create file grants permanent access site:

from pyamf import sol  permissions = sol.sol ('1.2.3.4/settings') permissions[u'always'] = true permissions[u'allow'] = true permissions[u'klimit'] = 100 sol.save (permissions, 'my-settings.sol') 

when copy appropriate directory, access granted automatically. again, not work pepper flash.

pepper flash ignores directory, , instead gets new temporary directory each instance of chrome:

c:\users[user]\appdata\local\temp\scoped_dir5976_6686\default\pepper data\shockwave flash\writableroot#sharedobje cts\6dmdjwlp\macromedia.com\support\flashplayer\sys#1.2.3.4\settings.sol

unfortunately, directory changes on each invocation. if somehow discover name of directory, upload file before requesting access.

but don't know how discover name of directory.

it turns out problem specific selenium, , how using selenium.

first, npapi flash, stores permissions on windows in subdirectory under user directory; example:

c:\users[user]\appdata\roaming\macromedia\flash  player\macromedia.com\support\flashplayer\sys 

pepper flash not use directory permissions, , not honor settings stored there. instead, stores permissions files in subdirectory underneath chrome user's data directory.

when creating chrome browser instance via selenium, temporary user data directory created session example:

c:\users[user]\appdata\local\temp\scoped_dir5976_6686 

pepper flash storing permissions files underneath directory, when browser session ended, temporary directory deleted, , settings forgotten.

the solution simple: when starting chrome via selenium, specify chrome user's data directory via command-line argument:

"user-data-dir=c:\\users\\[user]\appdata\local\google\chrome\user data" 

pepper flash store permissions in directory, , because permanent directory not deleted when browser session ends, there next instance, , permissions granted remembered.


Comments

Popular posts from this blog

android - MPAndroidChart - How to add Annotations or images to the chart -

javascript - Add class to another page attribute using URL id - Jquery -

firefox - Where is 'webgl.osmesalib' parameter? -