亲爱的朋友和同事
这是一个奇怪的场景,或者可能是已经面临这个问题的人不确定但是亲自看看。
考虑使用PageFactory方法初始化5个字段。登录页面上有3个字段已经加载到DOM中,其余2个(登录后的主页)字段尚未加载到DOM中。
现在,当我使用网格从其他客户端远程启动登录测试时,它可以正常工作。
但是,当我使用网格在同一客户端上远程启动另一台计算机的测试时,无效。
我的工具集 语言绑定=> C#WebDriver 2.47.0,TestRunner => Gallio / mBUnit,Browser =>任何(Chrome / FF),DotNet Grid Standalone Server 2.47.1
我有一个Login函数,其中所有页面元素都通过PageFactory方法初始化,如下所示
public LoginFunction(驱动程序)
{
PageFactory.InitElements(driver,this);
}
元素声明如下
[FindsBy(How = How.CssSelector, Using = @"#UserName")]
[CacheLookup]
public IWebElement UserNameTextField { get; set; }
[FindsBy(How = How.CssSelector, Using = @"#Password")]
[CacheLookup]
public IWebElement PasswordTextField { get; set; }
[FindsBy(How = How.CssSelector, Using = @".span2>input")] //input[@value='Sign in']")]
[CacheLookup]
public IWebElement LoginButton { get; set; }
[FindsBy(How = How.XPath, Using = @"//h2[contains(text(),'Welcome, admin')]")]
[CacheLookup]
public IWebElement WelcomeFormMessageText { get; set; }
[FindsBy(How = How.Id, Using = @"tabslist")]
[CacheLookup]
public IWebElement MainTabsList { get; set; }
现在当PageFactory.InitElements(驱动程序,这个);语句执行时,测试失败,同时初始化实际上不存在于DOM中的WelcomeFormMessageText IWebElement。登录成功后,这些元素出现在主页上。
现在的问题是,当我从我的机器运行它时,同样的测试运行良好,当我从另一台机器运行它时失败: - (
两台机器配置相同,具有相同的操作系统,浏览器版本,位系统等。
我试图在第三台机器上运行测试,但它也失败了。它似乎只能从我的m / c运行。
有没有人见过这个问题?或者有任何线索?
提前致谢。
答案 0 :(得分:0)
在远程计算机上运行测试通常比在本地运行测试慢。 我认为这是由于登录后延迟到达远程计算机上的主页,因此您无法在主页上看到元素,因为HomePage尚未加载。
尝试在登录后添加等待,然后访问HomePage上的元素,它应该可以工作。
您还需要在登录后重新初始化PageFactory以获取页面上的新元素。
虽然,我强烈建议您为登录页面和主页设置单独的PageFactory。