2

我有以下页面:

=========== mytestpage1.htm ===========

<p>This is my test page 1</p>
<input id="mysearch" type="image" onclick="return searchClick();" src="../../Img/arrow_large_down.gif" />
<span id="generatingResults" style="font-weight:bold;DISPLAY: none">Generating results...</span>
<script>
    function searchClick() {
        document.getElementById("generatingResults").style.display = 'block';
        location.href = 'mytestpage2.htm';
        return false;
    }
</script>

=========== mytestpage2.htm ===========

<p><b>This is my test page 2</b></p>

我正在执行以下操作:

  1. 单击“mysearch 按钮”以便加载 mytestpage2.htm
  2. 点击浏览器返回按钮返回mytestpage1.htm
  3. 确认我可以看到字符串“正在生成结果...”

如果我使用 Firefox 12.0 手动测试,我会看到显示的字符串。

但是,当我使用 Selenium 时,字符串不会显示。以下是基本的 Selenium 测试步骤:(浏览器为 OpenQA.Selenium.Remote.RemoteWebDriver,测试使用 Firefox 12.0)

browser.FindElementById("mysearch").Click();
browser.Navigate().Back();
var canBeSeen = browser.FindElementById("generatingResults").GetCssValue("display") == "block";

canBeSeen 设置为 false(我在 .NET 4.0 上使用 Selenium 的 2.33.0.0 版本)

我发现这些似乎相关的链接:

https://code.google.com/p/selenium/issues/detail?id=3611 https://code.google.com/p/selenium/issues/detail?id=2181

有谁知道为什么我在尝试使用 Selenium 模拟浏览器后退按钮时遇到上述问题?

如果是这样,我该如何修复它以便将 canBeSeen 设置为 true?

提前致谢。

4

1 回答 1

0

据我了解,当单击后退按钮时,它将重新加载 mytestpage1.htm,其中隐藏了生成结果。即,您以前的事务没有持久化。如果您使用任何服务器端脚本,那么有其他解决方案。现在,请尝试以下操作。在移动到下一页时设置一个 cookie 对象,然后在您返回时根据 cookie 值设置字符串的显示属性。

如果您不熟悉 Cookie,请在此处查看

更改您的 searchClick 方法如下,

function searchClick() {

   // check your cookie variable whether to display or not use a if condition 
     document.getElementById("generatingResults").style.display = 'block';
    location.href = 'mytestpage2.htm';
   // if it is the first time you are visiting this page, That is your cookie object is null, then set a value.
    return false;
}
于 2013-08-01T16:46:39.700 回答