Windows Phone 8.1 Support

Jul 23, 2014 at 3:52 PM
Any documentation to have this working on Phone 8.1?
Coordinator
Jul 31, 2014 at 8:29 PM
Yes there is some issue in Windows mobile 8.1 driver and its not working. Currently supported only 8.0 We will fix update.
Coordinator
Nov 17, 2014 at 1:31 PM
I was able to use the driver to run a simple test also on Windows Phone 8.1 emulator and on Lumia 920 device running the 8.1 software. On the emulator, the connection didn't work "out of box", but I was able to find a workaround - see http://blog.vjrantal.net/2014/11/14/connecting-to-a-server-running-on-windows-phone-8-1-emulator/ for details.
Coordinator
Nov 20, 2014 at 11:21 PM
Thanks vjrantal. Indeed we already figured out and its working good in win 8.1 however we still need a good fix for emulator.
Coordinator
Nov 21, 2014 at 12:19 PM
Is the issue you are having related to using the deployment tool or in the functionality of the driver? If it is in the functionality of the driver, what is the issue you are seeing?
Nov 25, 2014 at 7:11 AM
Edited Nov 25, 2014 at 7:20 AM
Hi, we are working on windows phone automation on wp 8.1. The commnucation to server on emulator is fine, but finding elements and interactions always fail because of JavaScript Injection failure with exception:
System.SystemException: An unknown error has occurred. Error: 80020006.
at Microsoft.Phone.Controls.NativeMethods.ValidateHResult(Int32 hr)
at Microsoft.Phone.Controls.WebBrowserInterop.InvokeScript(String scriptName, String[] args)
at Microsoft.Phone.Controls.WebBrowser.InvokeScript(String scriptName, String[] args)
at WindowsPhoneDriver.AutomatedWebBrowser.EvaluateJavaScript(String script, Object& returnValue)
I tried injecting simple javascripts like calling a javascript function defined in the web page, and it succedded.

So i doubt if there're something wrong with the web driver atoms.

From the source code of the project, i saw that class WebDriverAtoms was auto generated and with web driver version 2.37.0
namespace WindowsPhoneDriver
{
    /**
     * The WebDriver atoms are used to ensure consistent behaviour cross-browser.
     * 
     * AUTO GENERATED - DO NOT EDIT BY HAND
     */
    [GeneratedCode("WebDriver", "2.37.0")]
    public static class WebDriverAtoms
    {
            ..............
    }
}
I have no idea how to generate the web driver atoms and got stucked for two days.
So I'd really appreciate it if some could give some clude?

Thanks
Coordinator
Nov 25, 2014 at 8:29 PM
Edited Nov 25, 2014 at 8:33 PM
There is a script in the source tree to update the atoms from the Selenium source code repository https://winphonewebdriver.codeplex.com/SourceControl/latest#support/updateatoms.cmd . However, I checked that it might not work as is due to some changes that have been done in the upstream repo.

Would it be possible to create a simple test case that results into the same error you are getting and publish it? I could potentially see if I run into the same problem and see if the root cause could be found.

One thing that I would at least double-check is that the JavaScript that ends up being evaluated doesn't contain any syntax errors etc.

The error message coming from WebBrowser.InvokeScript is not often very useful, which makes it sometimes hard to find where exactly the issue is.
Nov 26, 2014 at 6:37 AM
I updated the atoms but it changed nothing.
I Updated Target WP OS Version for project WindowsPhoneDriverDev to WP 8.1 and run the project targeting windows phone emulator 8.1;
I used the sample test case:
 RemoteWebDriver driver = new RemoteWebDriver(
                   new Uri("http://169.254.80.80:8080"),
                   DesiredCapabilities.InternetExplorer());

driver.Navigate().GoToUrl("https://winphonewebdriver.codeplex.com/");
            
Thread.Sleep(3000);
                       
var search_box = driver.FindElementById("wiki_search");
//SendKeys doesn't work, i used ExcuteScript of IJavaScriptExecutor instead, which works fine for wp 8.0.
//search_box.SendKeys("windows phone");
((IJavaScriptExecutor)driver).ExecuteScript("document.getElementById(\"wiki_search\").value=\"windows phone\" ");

 var btn = driver.FindElementById("SearchButton");
 if (btn != null) btn.Click();
Coordinator
Nov 26, 2014 at 12:25 PM
Edited Nov 26, 2014 at 12:26 PM
I used the C# language bindings and following code worked on Windows Phone 8.1 U1 emulator:
driver.Navigate().GoToUrl("https://winphonewebdriver.codeplex.com/");
var search_box = driver.FindElement(By.Id("wiki_search"));
((IJavaScriptExecutor)driver).ExecuteScript("document.getElementById(\"wiki_search\").value=\"windows phone\" ");
var btn = driver.FindElement(By.Id("SearchButton"));
if (btn != null) btn.Click(); // btn was not null here
driver.Quit();
I can also see in the emulator UI that the "windows phone"-text got written to the search box.

This isn't probably very helpful to your problem, but at least seems like the ExecuteScript-functionality is not fundamentally broken on Windows Phone 8.1 and works at least in some cases (like in my above case).
Nov 27, 2014 at 3:01 AM
Turns out the element related functionalities got broken when i changed "Target Windows Phone OS Version" to Windows Phone 8.1.
With OS Version as WP 8.0, the functionalities are fine in WP emulator 8.1.