好像我在我的代码中遇到了一些同步问题。 在我的过程中,我点击一个按钮打开一个新窗口。 我通过以下代码切换到新窗口。
_webdriver.SwitchTo().Window(_webdriver.WindowHandles.Last();

_webdriver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));

我甚至尝试过:
Thread.Sleep(3000);

不幸的是,似乎大多数时候问题是selenium没有切换到新窗口(在调试时可以看到它)。
我很乐意得到您的帮助。
答案 0 :(得分:0)
我不确定这是如何在C#中完成的,但我认为selenium是相同的,你只需要使用C#语法进行循环。
if (window.cordova && window.SQLitePlugin) {
var db = $cordovaSQLite.openDB({ name: "my.db", location: 1 }); //device
}else{
var db = window.openDatabase("my.db", '1', 'my', 5 * 1024 * 1024); // browser
}
var siret1=data["siret"]
console.log(siret1);
var query1 = "UPDATE User SET siret = \'siret1\' " ;
$cordovaSQLite.execute(db, query1).then(function(res) {
console.log("ok update");
}, function (err) {
console.error(err);
console.log("not ok update");
});
这就是我在Java中的表现。你会在C#中得到 //Switch to newly opened window (JAVA)
for(String winHandle : driver.getWindowHandles()){
driver.switchTo().window(winHandle);
}
相同的方法,如果我没有错,因为这是selenium方法。
希望这对你有所帮助。
答案 1 :(得分:0)
您可以等待两个窗口,然后将上下文设置为新窗口:
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(20));
// wait for 2 windows
ReadOnlyCollection<String> handles = null;
wait.Until((d) => (handles = driver.WindowHandles).Count > 1);
// set the context on the new window
driver.SwitchTo().Window(handles[handles.IndexOf(driver.CurrentWindowHandle) ^ 1]);