Al momento della stesura di Microsoft Edge non è supportato da CodedUI, hanno detto che stanno valutando il supporto, ma al momento non è possibile utilizzarlo: Questo link mostra un bug depositato sul tema: https://connect.microsoft.com/VisualStudio/feedback/details/1551238/vs2015-supports-codedui-automation-test-for-edge-browser
WebDriver è il modo attualmente migliore per automatizzare Microsoft Edge. Tuttavia guardando il codice sopra non sei in grado di fare esattamente la stessa cosa. Con WebDriver puoi localizzare un elemento tramite Id, ClassName, TagName, Name, LinkText, Partial Link Text, CSS, Xpath ma, per quanto ne so, non puoi localizzare un oggetto da x, y coordina come fai tu l'esempio sopra.
Per iniziare con Webdriver. Crea un'app per console. Installare i seguenti pacchetti:
Install-Package Selenium.RC
Install-Package Selenium.WebDriver
Install-Package Selenium.WebDriverBackedSelenium
Install-Package Selenium.Support
installare il corretto WebDriver Microsoft a seconda del sistema operativo:
Ulteriori informazioni su Microsoft WebDriver sono disponibili here.
È quindi possibile aggiungere del codice a guidare WebDriver, l'esempio seguente va al mio blog e ottiene un elemento tramite il suo nome di classe CSS:
using System;
using System.IO;
using OpenQA.Selenium;
using OpenQA.Selenium.Edge;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Support.UI;
namespace SampleGetText
{
public class Program
{
static void Main(string[] args)
{
var text = GetText();
}
public static string GetText()
{
RemoteWebDriver driver = null;
string serverPath = "Microsoft Web Driver";
// Makes sure we uses the correct ProgramFiles depending on Enviroment
string programfiles = Environment.Is64BitOperatingSystem ? "%ProgramFiles(x86)%" : "%ProgramFiles%";
try
{
// Gets loaction for MicrosoftWebDriver.exe
serverPath = Path.Combine(System.Environment.ExpandEnvironmentVariables(programfiles), serverPath);
//Create a new EdgeDriver using the serverPath
EdgeOptions options = new EdgeOptions();
options.PageLoadStrategy = EdgePageLoadStrategy.Eager;
driver = new EdgeDriver(serverPath, options);
//Set a page load timeout for 5 seconds
driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(5));
// Navigate to my blog
driver.Url = "https://blogs.msdn.microsoft.com/thebeebs/";
// Find the first element on my screen with CSS class entry-title and return the text
IWebElement myBlogPost = driver.FindElement(By.ClassName("entry-title"));
return myBlogPost.Text;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
return "";
}
finally
{
if (driver != null)
{
driver.Close();
}
}
}
}
}
fonte
2015-12-23 12:11:24
A che punto il codice non funzionano più come previsto? (Ad esempio, il modello di testo non è supportato o RangeFromPoint() restituisce un intervallo imprevisto.) Ci dovrebbe essere un elemento in Edge che supporta il modello di testo. Quindi forse FromPoint() non restituisce quell'elemento. Potresti controllare le proprietà di quell'elemento per determinare quale elemento hai. Se non è l'elemento che supporta il modello di testo, è possibile passare all'elemento del modello di testo dall'elemento restituito da FromPoint(). –
È possibile che da punto non funzioni, anche se ne ho bisogno. – tofutim
La tua domanda è troppo ampia in quanto potrebbe/dovrebbe funzionare nel caso generale. Si prega di fornire un caso di riproduzione completa. –