Lis*_*ung 14 c# selenium selenium-chromedriver
当我单击测试中的链接时,它会打开一个新选项卡.我希望ChromeDriver专注于该标签.我尝试使用以下代码让ChromeDriver使用ctrl + tab快捷方式更改tabas:
Actions builder = new Actions(driver);
builder.KeyDown(Keys.Control).KeyDown(Keys.Tab).KeyUp(Keys.Tab).KeyUp(Keys.Control);//switch tabs
IAction switchTabs = builder.Build();
switchTabs.Perform();
Run Code Online (Sandbox Code Playgroud)
但是这引发了以下异常:
ekmLiveChat.tests.UITests.EndToEndTest.EndToEnd:
System.ArgumentException : key must be a modifier key (Keys.Shift, Keys.Control, or Keys.Alt)
Parameter name: key
Run Code Online (Sandbox Code Playgroud)
有没有办法使用ChromeDriver切换标签?
Tor*_*lin 18
正如我对你的帖子的评论中提到的,我不确定Chrome驱动程序是否像处理窗口一样处理标签.
这个代码在打开新窗口时可以在Firefox中运行,所以希望它也适用于你的情况:
public void SwitchToWindow(Expression<Func<IWebDriver, bool>> predicateExp)
{
var predicate = predicateExp.Compile();
foreach (var handle in driver.WindowHandles)
{
driver.SwitchTo().Window(handle);
if (predicate(driver))
{
return;
}
}
throw new ArgumentException(string.Format("Unable to find window with condition: '{0}'", predicateExp.Body));
}
SwitchToWindow(driver => driver.Title == "Title of your new tab");
Run Code Online (Sandbox Code Playgroud)
(我希望我对这个答案的代码编辑没有引入任何错误......)
在Chrome有机会打开它之前,请确保您没有开始寻找新标签:)
Dev*_*Dav 17
这对我有用:
var popup = driver.WindowHandles[1]; // handler for the new tab
Assert.IsTrue(!string.IsNullOrEmpty(popup)); // tab was opened
Assert.AreEqual(driver.SwitchTo().Window(popup).Url, "http://blah"); // url is OK
driver.SwitchTo().Window(driver.WindowHandles[1]).Close(); // close the tab
driver.SwitchTo().Window(driver.WindowHandles[0]); // get back to the main window
Run Code Online (Sandbox Code Playgroud)
在我的代码中,我单击一个按钮并打开一个选项卡(因此它已经在新选项卡上,我不需要执行任何操作即可转到该新选项卡)并运行它,以便它识别新选项卡并工作:
driver.SwitchTo().Window(driver.WindowHandles.Last());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28631 次 |
| 最近记录: |