我的应用程序具有一项功能,该功能需要花费一些时间才能加载搜索结果(例如,超过一分钟),因此我的脚本失败,并给出60秒的会话超时错误消息。我用谷歌搜索了一些解决方案,并从堆栈溢出“ How to set session timeout in web.config”那里得到了一个解决方案,但是我不确定在哪里确切地实现它。我的框架中有一个名为“ app.config”的文件,而app.config中的代码在下面
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
下面提到的代码是在堆栈溢出中给出的,以便对web.config文件进行必要的更改以设置会话超时
<configuration>
<system.web>
<sessionState timeout="20"></sessionState>
</system.web>
</configuration>
请帮助我在app.config文件中进行必要的更改。
答案 0 :(得分:1)
您可以通过以下方式设置对驱动程序的隐式等待:
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(20);
一个隐式等待是告诉WebDriver在尝试查找一个或多个元素(如果它们不立即可用)时轮询DOM一定时间。默认设置为0。设置后,将在WebDriver对象实例的生存期内设置隐式等待。
现在,使用app.config的唯一原因是您想使此超时可配置。在这种情况下,您将在app.config文件中添加一个部分:
<appSettings>
<add key="driver.Timeout" value="20" />
</appSettings>
然后在您的代码中,您将执行以下操作:
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(Int32.Parse(ConfigurationManager.AppSettings["driver.Timeout"]));
这样,如果您将应用程序部署到某个地方并希望使超时可配置,则只需在文本编辑器中编辑app.config文件并更改值即可。