2

Selenium webDriver を使用する場合、常にドライバーを起動してブラウザーを開き、フロー全体をナビゲートして何かを検証する必要があり、例外のスローに失敗した場合は、多くの時間を費やして同じことを行う必要があります。

別のブラウザー セッションを開いたままにし、開いたセッションに webdriver を接続して作業させることを常に考えていたので、フローを通過する必要がなくなりました。

Javaを使用して、Selenium Webdriverでこれを行う方法を知っている人はいますか?

ありがとう

4

1 に答える 1

0

私はこれを試しました。わたしにはできる。

public class xRemoteWebDriver : RemoteWebDriver
{
    public static bool newSession;
    public static string capPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TestFiles", "tmp", "sessionCap");
    public static string sessiodIdPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TestFiles", "tmp", "sessionid");

    public xRemoteWebDriver(Uri remoteAddress) 
        : base(remoteAddress, new DesiredCapabilities())
    {
    }

    protected override Response Execute(DriverCommand driverCommandToExecute, Dictionary<string, object> parameters)
    {
        if (driverCommandToExecute == DriverCommand.NewSession)
        {
            if (!newSession)
            {
                var capText = File.ReadAllText(capPath);
                var sidText = File.ReadAllText(sessiodIdPath);

                var cap = JsonConvert.DeserializeObject<Dictionary<string, object>>(capText);
                return new Response
                {
                    SessionId = sidText,
                    Value = cap
                };
            }
            else
            {
                var response = base.Execute(driverCommandToExecute, parameters);
                var dictionary = (Dictionary<string, object>) response.Value;
                File.WriteAllText(capPath, JsonConvert.SerializeObject(dictionary));
                File.WriteAllText(sessiodIdPath, response.SessionId);
                return response;
            }
        }
        else
        {
            var response = base.Execute(driverCommandToExecute, parameters);
            return response;
        }
    }
}

それが役に立てば幸い。

于 2015-03-11T10:38:33.650 に答える