相关疑难解决方法(0)

.NET:将对象序列化为来自第三方程序集的文件(以使Selenium WebDriver更快)

序列化FirefoxDriver的最终目标(我的问题在这里)=使WebDriver更快!!

以下是描述如何序列化对象的链接.但它需要您从ISerializable实现您正在序列化的对象.我想要做的是序列化一个我没有定义的对象 - 一个基于第三方程序集(来自项目引用)中未实现ISerializable的类的对象.那可能吗?如何才能做到这一点?

http://www.switchonthecode.com/tutorials/csharp-tutorial-serialize-objects-to-a-file

属性(IWebDriver =接口类型):

private IWebDriver driver;
Run Code Online (Sandbox Code Playgroud)

对象实例(FireFoxDriver是类类型):

driver = new FirefoxDriver(firefoxProfile);
Run Code Online (Sandbox Code Playgroud)

================

回答发布后的3/21/2012更新

为什么会抛出错误?它不喜欢这一行:

serializedObject.DriverInstance = (FirefoxDriver)driver;
Run Code Online (Sandbox Code Playgroud)

...

错误:

Cannot implicitly convert type 'OpenQA.Selenium.IWebDriver' to 'OpenQA.Selenium.Firefox.FirefoxDriver'. An explicit conversion exists (are you missing a cast?)
Run Code Online (Sandbox Code Playgroud)

这是代码:

    FirefoxDriverSerialized serializedObject = new FirefoxDriverSerialized();
    Serializer serializer = new Serializer();
    serializedObject = serializer.DeSerializeObject(@"C:\firefoxDriver.qa");
    driver = serializedObject.DriverInstance;

    if (driver == null)
    {
        driver = new FirefoxDriver(firefoxProfile);
        serializedObject.DriverInstance = (FirefoxDriverSerialized)driver;
        serializer.SerializeObject(@"C:\firefoxDriver.qa", serializedObject);
    }
Run Code Online (Sandbox Code Playgroud)

这是我构建的两个Serializer类:

public class Serializer
{
   public Serializer() …
Run Code Online (Sandbox Code Playgroud)

.net performance serialization assemblies webdriver

7
推荐指数
1
解决办法
1088
查看次数

在C#中获取Selenium RemoteWebDriver的会话ID

我正在尝试获取在SauceLabs云上运行的测试的会话ID,但我似乎无法访问它.

我尝试了以下方法:

//Returns null
var sessionId = (string)((RemoteWebDriver)driver).Capabilities.GetCapability("webdriver.remote.sessionid");

//Will not compile
sessionId = ((RemoteWebDriver)driver).SessionId; //This is protected. 
Run Code Online (Sandbox Code Playgroud)

第二种方法特别令人困惑.它是一个受保护的属性,但如果我只能从派生类访问它,那么它对我所需要的东西基本没用.

会话ID

任何帮助表示赞赏.

为了使其工作,我必须创建一个派生自的类RemoteWebDriver,然后定义一个getter方法.例如:

class  CustomeRemoteDriver : RemoteWebDriver
{

    public CustomeRemoteDriver(ICapabilities desiredCapabilities):base(desiredCapabilities)
    {
    }

    public CustomeRemoteDriver(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities):base(commandExecutor, desiredCapabilities)
    {
    }

    public CustomeRemoteDriver(Uri remoteAddress, ICapabilities desiredCapabilities):base(remoteAddress, desiredCapabilities)
    {
    }

    public CustomeRemoteDriver(Uri remoteAddress, ICapabilities desiredCapabilities, TimeSpan commandTimeout):base(remoteAddress, desiredCapabilities, commandTimeout)
    {
    }

    public string GetSessionId()
    {
        return base.SessionId.ToString();
    }
} 
Run Code Online (Sandbox Code Playgroud)

c# unit-testing saucelabs selenium-webdriver

7
推荐指数
1
解决办法
8772
查看次数

使用Selenium RC捕获浏览器

我想使用BrowserStack之类的browserfarms来运行UI测试.我们目前正在使用BS通过JsTestDriver运行单元测试.因此,启动服务器,让browserfarm创建的一堆浏览器连接到jstd服务器,然后执行测试.

不幸的是,我无法找到一种方法来编写与jstd一起使用的UI测试(单击某个按钮,键入内容等).

Selenium RC是一个旨在进行UI测试的框架,但它强制使用自己的浏览器实例:Selenium通过作为框架一部分的驱动程序启动自己的浏览器.

我想要的是将JsTestDriver概念与Selenium的UI测试相结合:使用Selenium编写测试,在本地主机上启动Selenium RC服务器,让一堆浏览器连接到在browserfarm上启动的服务器,然后执行UI试验.

这甚至可能吗?有没有其他方法可以使用JSTD运行UI测试?Selenium RC是否无法捕获未使用webdriver启动的浏览器?

提前致谢.

javascript selenium ui-testing selenium-rc js-test-driver

6
推荐指数
1
解决办法
410
查看次数

我如何在普通浏览器中使用selenium

是否可以将selenium连接到我正常使用的浏览器而不是驱动程序?对于正常浏览,我使用带有几个插件的chrome - 添加块加,flashblock等等.我想尝试使用此特定配置加载网站.我怎样才能做到这一点?

ps - 我不想只连接到这个问题中的开放浏览器:

如何连接已经打开的浏览器?

如果我使用驱动程序生成进程,我不在乎.我只想要完整的浏览器配置 - cookies,插件,字体等.

谢谢

python selenium python-2.7

6
推荐指数
1
解决办法
2827
查看次数