在页面中找不到控件,但仅在通过 selenium-server 运行时

Posted

技术标签:

【中文标题】在页面中找不到控件,但仅在通过 selenium-server 运行时【英文标题】:can't find controls in page, but only when running via selenium-server 【发布时间】:2011-01-21 01:14:25 【问题描述】:

我有一组使用 Firefox 中的 Selenium IDE 开发的测试。测试运行良好并且全部通过。现在我正在尝试将它们移植到 C# 并使用 MSTest 和 selenium-server 运行 IE 测试。以下是事件的顺序:

    通过 Selenium IDE 在 Firefox 上运行所有测试。所有测试通过。 将测试导出到 MSTest(Nunit 导出、重命名某些内容等) 启动 selenium-server-1.0.3

    在 VS2008 中运行测试。 Selenium 设置为:selenium = new DefaultSelenium("localhost", 4444, "*chrome", "http://localhost/theSite/");;请注意,我可以浏览到 http://localhost/theSite/ 就好了。

    4a。确认测试正在启动 Firefox。得到结果: 17:00:30.290 信息 - 正在准备 Firefox 配置文件... 17:00:33.842 信息 - 正在启动 Firefox...

    第一次测试(控件“ctl00_TopNavBar_LoginStatus1”中的 waitForText“Login”)失败。找不到控件。 if ("Login" == selenium.GetText("id=ctl00_TopNavBar_LoginStatus1")) break; 或者 if ("Login" == selenium.GetText("ctl00_TopNavBar_LoginStatus1")) break;

    所有其他测试也失败了——同样的原因。每个测试的顶部都有一个waitForText

尝试在 *chrome、*iexploreproxy 和 *firefox 中运行测试。都因为同样的原因而失败。

尝试使用selenium.CaptureEntirePageScreenshot("c:\\temp\\screenshots\\seleniumSite.png", "background=#FFFFFF"); 转储屏幕截图,但屏幕截图只是一个白条。

所以,我的问题是,我该如何调试它并找出真正的问题是什么? 显然页面将呈现并且测试将通过。只是当我在 Selenium-RC 中尝试这些测试时,它失败了。 Selenium IDE 是否有一些与将测试导出到 C# 相关的错误? (我注意到一个错误)。

【问题讨论】:

..你能发布你的 c# selenium 测试吗?过去我在页面加载时间、等待命令、xpaths 和 click(link=exact) 无法正确移植到 C# 方面遇到很多问题,但它们在 selenium IDE 中作为 html 测试运行良好。 【参考方案1】:

您正在执行selenium.Start()selenium.Open() 吗?您看到浏览器中打开的页面了吗?

完全初始化应该类似于:

selenium = new DefaultSelenium("localhost", 4444, "*chrome", "http://localhost/");
selenium.Start();
selenium.Open("/theSite/");

重要提示!从空白页面开始测试您的 IDE 测试。此外,在使用 IDE 时,如果命令只有一个参数,请将其放在 Target 字段中,即使它不是控件名称。

【讨论】:

就是这样,Selenium IDE 不会创建 selenium.Open 命令。 更正:我总是从已经打开页面的角度进行测试。

以上是关于在页面中找不到控件,但仅在通过 selenium-server 运行时的主要内容,如果未能解决你的问题,请参考以下文章

新记录保存在存储中,但仅在刷新页面后显示

selenium IDE 如何定位页面变动元素

TypeScript:仅在单元测试中找不到模块的声明文件

MS SQL Server 在空格上拆分单词,但仅在不在双引号中时

Python Selenium在Div中找不到ID

在 selenium webdriver 中找不到 ::before css 选择器元素