Selenium Webdriver窗口处理C#切换失败 - c#

在测试过程中会弹出2个窗口。

我的代码:

string BaseWindow = driver.CurrentWindowHandle;                 
ReadOnlyCollection<string> handles = driver.WindowHandles;

foreach(string handle in handles)                    
{                         
    Boolean a = driver.SwitchTo().Window(handle).Url.Contains("Main");
    if (a == true)  
    {       
        InitialSetting.driver.SwitchTo().Window(handle);      
        break;
    }  
}                

我想切换到URL包含“ Main”的窗口。但是,当测试运行时,它会在两个窗口之间连续切换,并且不会停止。

我调试后发现,即使foreach为true,boolean a也不会中断。

我该如何解决?

参考方案

//switch to new window 
driver.FindElement(By.Id("link")).Click(); 

//wait for new window to open 
Thread.Sleep(2000); 

//get the current window handles 
string popupHandle = string.Empty; 
ReadOnlyCollection<string> windowHandles = driver.WindowHandles;  

foreach (string handle in windowHandles)  
{  
    if (handle != existingWindowHandle)  
    {  
         popupHandle = handle; break;  
    }  
}  

 //switch to new window 
driver.SwitchTo().Window(popupHandle); 

//check for element on new page 
webElement = driver.FindElement(By.Id("four04msg")); 
if(webElement.Text == "THE CONTENT YOU REQUESTED COULDN’T BE FOUND...")  
{  
    return false;  
}  
else  
{  
    return true;  
}  

 //close the new window to navigate to the previous one
driver.close(); 

//switch back to original window 
driver.SwitchTo().Window(existingWindowHandle);

Selenium:如何使RemoteDriver始终附加到当前的浏览器选项卡? - javascript

我正在开发一个Windows应用程序,该应用程序可以通过语音命令操纵浏览器。我想适当地处理用户添加一些标签并根据需要更改所选标签的情况。事实证明,RemoteDriver仅与一个选项卡一起使用,并且可以通过提供选项卡手柄将焦点切换到另一个选项卡。但是我不知道如何获取选定的选项卡句柄并始终检查选定的选项卡是否已更改,或者是否存在始终与选定的选项卡一起使用的方法…

Selenium Web Driver访问Jquery中的Javascript全局变量 - javascript

我正在尝试使用Selenium在Python中运行功能测试,我想在某个页面上声明的Javascript中检索全局变量的值。通常,browser.execute_script("return globalVar;")可以正常工作,但是在$(document).ready(function(){中声明了该变量,Selenium无法找到它。因此…

Selenium:在进行JavaScript调用时无需点击即可获得最终的href /链接 - javascript

我正在抓取一长串的html链接(在ToS下允许)。但是,所有链接都是javascript调用(href =“ javascript :;”),因此使用get_attribute()获取链接将不起作用。我不想实际单击所有链接,因为它会为每个链接下载一个较大的pdf文件是否有可能获得最终调用的href /链接,而无需实际单击链接并下载文件?谢谢! 参考方案 是的…

Python Selenium:单击下拉菜单中的选项时可以更改值吗? - javascript

我正在使用python硒进行一些搜索。在我查询的一个网页上,搜索对话框允许我通过下拉菜单指定是否要搜索所有部分或特定部分。要选择哪个部分,该站点在弹出窗口中有一些单独的对话框,我可以单击一个部分,然后在内部为下拉菜单中的“此部分”选项分配选定部分的值。这是检查选择器时的外观: <select ...> <option id="se…

Selenium Webdriver(Java)-查找禁用了属性=“”的元素 - java

我有<input id="test" disabled="">。如何找到具有属性disable =“”的元素。附言:在这种情况下,我不需要使用ID。我想找到一个具有禁用属性的元素。我尝试使用String enbl = Login.driver.findElement(By.cssSelector("…