C# 如何在SelectElement.SelectByValue()之后不等待页面加载

C# 如何在SelectElement.SelectByValue()之后不等待页面加载,c#,webdriver,selenium-webdriver,C#,Webdriver,Selenium Webdriver,给定一个包含元素和一些的页面,单击该页面会导致浏览器打开一个新的URL,如(忽略JavaScript代码): 然后等待新页面加载完毕 在我的例子中,新位置的页面加载需要超过60秒(有意),因此我必须增加WebDriver实例的命令超时时间。不幸的是,此超时将影响使用同一WebDriver实例创建的所有其他测试 此外,我还希望显式等待加载新页面(在测试场景中将其标记为长时间运行),但在这种情况下,在SelectByValue命令成功后将调用下一个命令,因此不再需要等待 我查看了源代码,发现Sele

给定一个包含
元素和一些
的页面,单击该页面会导致浏览器打开一个新的URL,如(忽略JavaScript代码):

然后等待新页面加载完毕

在我的例子中,新位置的页面加载需要超过60秒(有意),因此我必须增加WebDriver实例的命令超时时间。不幸的是,此超时将影响使用同一WebDriver实例创建的所有其他测试

此外,我还希望显式等待加载新页面(在测试场景中将其标记为长时间运行),但在这种情况下,在
SelectByValue
命令成功后将调用下一个命令,因此不再需要等待

我查看了源代码,发现
SelectByValue
命令使用
Click
逻辑,如果需要,它会等待页面加载

所以我的问题是:如何在不等待加载新页面的情况下显式执行
SelectByValue
(或
单击

更新: 我实际上希望在代码中包含以下内容:

// the following command should not wait for the new page to load
hereOrThereSelectElement.SelectByValueButDoNotWait("here");
webDriverWait.Until(/* some "page has loaded" check */)

最后,我找到了解决办法

与此同时,问题已略微转移到调用Web元素的
Click()
方法,该方法在超时时运行。net除非如此,以下解决方案也适用于调用
SelectByValue()
的原始问题

因此,可以使用Selenium的
操作
低级交互生成器来单击元素

var actions = new Actions(webDriver);
actions
  .MoveToElement(aClickableWebElement);
  .Click();
  .Build()
  .Perform();

这可能会帮助任何有类似问题的人。

我不确定您是否可以执行Click()并选择不等待页面加载。请查看下面的代码是否满足您的需要<代码>公共常量int LongRunningTestWait=60;var webDriverWait=新的webDriverWait(驱动程序,TimeSpan.FromSeconds(LongRunningTestWait));尝试{HereorSelectElement.SelectByValue(“此处”);webDriverWait.Until(arg=>IsElementPresent(elementInNewPage));}catch(异常e){//Throw Exception}因为
SelectByValue
已经在等待加载新页面,对
webDriverWait.Until的后续调用是不必要的。但这正是我想要的代码。
// the following command should not wait for the new page to load
hereOrThereSelectElement.SelectByValueButDoNotWait("here");
webDriverWait.Until(/* some "page has loaded" check */)
var actions = new Actions(webDriver);
actions
  .MoveToElement(aClickableWebElement);
  .Click();
  .Build()
  .Perform();