首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Selenium Firefox打开超时

Selenium Firefox打开超时
EN

Stack Overflow用户
提问于 2010-06-29 01:06:17
回答 3查看 10.1K关注 0票数 5

使用Windows2008、C#、Firefox3.5.1、Selenium RC (v1.0.1)

当它工作时,这段代码执行得非常快,页面在.5秒内加载。

然而,在3-5次迭代之后,会话似乎总是失败。open命令将导致生成一个窗口,但不加载任何页面。最终返回一个超时异常。页面尚未实际超时。相反,就好像对URL的请求从未到达浏览器窗口一样。

代码语言:javascript
复制
class Program
    {
        static void Main(string[] args)
        {
            for (int i = 0; i < 10; i++)
            {
                var s = new DefaultSelenium("localhost", 4444, "firefox", "http://my.server");
                s.Start();
                s.SetSpeed("300");
                s.Open("/");
                s.WaitForPageToLoad("30000");
                s.Type("//input[contains(@id, '_username')]", "my.test");
                s.Type("//input[contains(@id, '_password')]", "password");
                s.Stop();

            }
        }
    }
EN

回答 3

Stack Overflow用户

发布于 2011-03-11 19:08:50

我有一个类似的设置(Firefox3.6.15,Selenium RC 1.0.1,但在WinXP上并使用Python库),我正在处理几个站点-一个站点在正常使用时很容易超时(例如,由人类用户),而其他站点通常不会。那些不是看起来有点慢,但容易超时的,当通过RC运行时,比由人运行时要慢得多-它不会总是超时,但这种情况要常见得多。

我有限的心理模型是,不知何故,RC正在做的额外步骤(与浏览器通信,检查它在返回的页面中看到的内容等)以某种方式添加到页面加载的每个步骤中,然后在某个时候他们会将其推到边缘。显然,这过于简单了,我只是没有时间进行适当的调查。

此外,我确实倾向于注意到问题随着时间的推移而变得更糟,这与OP所看到的有点吻合(即第一次工作,但不是在3-5次尝试之后)。通常情况下,重启似乎可以解决问题,但如果没有适当的调查,我不知道这有什么帮助,可能是以某种方式释放了内存(机器被用于其他事情),被分配到我们公司的另一个代理服务器上,或者其他我没有考虑过的事情。

所以..。这里没有多少完整的答案(评论可能更合适,但我的登录名还不能),但至少它强调了你不是唯一的一个。定期重启是一件烦人的事情,但在没有任何更聪明的分析和答案的情况下,也许它们值得一试?

票数 2
EN

Stack Overflow用户

发布于 2011-04-01 02:11:54

我也面临着同样的问题,因为DefaultSelenium的.This方法有30000ms的超时时间,所以它需要等待30秒才能加载页面。您可以尝试这个简单的解决方案。

代码语言:javascript
复制
//selenium is DefaultSelenium instance as private member of the class

            boolean serverStartTry = false;
        int tryCount =1;

        while((!serverStartTry) && tryCount <= Constants.maxServerTries){
            try{
                this.selenium.open(ReadConFile.readcoFile("pageName"));
                System.out.println("Server started in try no: "+tryCount);
                serverStartTry =true;
            }catch (SeleniumException e) {
                System.out.println("Server start try no: "+tryCount );
                System.out.println("Server Start Try: "+ serverStartTry);
                serverStartTry = false;
                tryCount++;
            }
        }
        if(!serverStartTry){
            System.out.println("Server Not started, no. of attempts made: "+tryCount);
            System.exit(0);
        }
票数 2
EN

Stack Overflow用户

发布于 2011-11-10 19:00:36

我已经用以下方法解决了:

代码语言:javascript
复制
selenium.setTimeout("60000");

在打开指令之前。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3134474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档