在此上下文中不支持获取透明代理的运行时类型

时间:2016-05-24 05:22:33

标签: c# selenium

我是硒的新手。在运行(调试)我的selenium测试(在C#中)时,我得到“在此上下文中不支持获取透明代理的运行时类型”,因此没有找到任何Web元素。

我使用过“Selenium.Support.PageObjects”& PageFactory用于定位和初始化网络元素。

任何人都可以帮助我吗?

以下是我的代码片段:

using OpenQA.Selenium;
using OpenQA.Selenium.Support.PageObjects;

namespace TestFramework
{
    public class TestClass: TestBase
    {

        public TestClass(Driver driver): base(driver) { }

        [FindsBy(How = How.XPath, Using = "//div[@class='modal-footer']/button[@title='Yes']")]
        public IWebElement YesButton { get; set; }

        [FindsBy(How = How.XPath, Using = "//div[@class='modal-footer']/button[@title='No']")]
        public IWebElement NoButton { get; set; }


        public void ClickYesButton()
        {
        YesButton.Click();
        }
        public void ClickNoButton(int timeout = ConfigMT.DefaultTimeout)
        {
        NoButton.Click();
        }

    }
}

TestBase类是:

using OpenQA.Selenium;
using OpenQA.Selenium.Support.PageObjects;
using OpenQA.Selenium.Support.UI;

namespace TestFramework
{

public class TestBase
{

    protected IWebDriver Driver { get; set; }

    public Page(Driver driver)
    {
        this.Driver = driver;
        PageFactory.InitElements(this.Driver, this);
    }

}
}

2 个答案:

答案 0 :(得分:7)

根据本答案底部的这个帖子,这似乎是VS调试器中的一个错误。

提到的解决方法是转到Debug>Options>Debugging>General,然后点击Use the legacy C# and VB expressions evaluators

复选框

虽然这对我有用,但如果这是你不幸尝试做的事情,那么你仍然无法检查该元素的方法或属性。

https://social.msdn.microsoft.com/Forums/vstudio/en-US/7f4e2bca-91dd-4919-8cbe-0adff2021ce8/debugging-transparent-proxy-objects-not-working-anymore-in-visual-studio-2015?forum=vsdebug

答案 1 :(得分:0)

.NET PageFactory实现在2.46中进行了重构,现在使用System.Runtime.Remoting.Proxies.RealProxy实例来拦截方法调用并填充标记有适当属性的字段和属性。使用.NET Framework的代理解决方案为其他第三方项目提供了使用.NET PageFactory实现的灵活性,因此不会发生变化。应该可以创建自己的代理解决方案,在Visual Studio中为您提供调试属性,但它需要自定义解决方案。