我是硒的新手。在运行(调试)我的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);
}
}
}
答案 0 :(得分:7)
根据本答案底部的这个帖子,这似乎是VS调试器中的一个错误。
提到的解决方法是转到Debug>Options>Debugging>General
,然后点击Use the legacy C# and VB expressions evaluators
虽然这对我有用,但如果这是你不幸尝试做的事情,那么你仍然无法检查该元素的方法或属性。
答案 1 :(得分:0)
.NET PageFactory实现在2.46中进行了重构,现在使用System.Runtime.Remoting.Proxies.RealProxy实例来拦截方法调用并填充标记有适当属性的字段和属性。使用.NET Framework的代理解决方案为其他第三方项目提供了使用.NET PageFactory实现的灵活性,因此不会发生变化。应该可以创建自己的代理解决方案,在Visual Studio中为您提供调试属性,但它需要自定义解决方案。