按给定的编号导航到浏览器窗口选项卡
本文关键字:浏览器 窗口 选项 导航 编号 | 更新日期: 2023-09-27 18:26:16
我正在创建一个命令,该命令将按编号导航到浏览器的选项卡。
public void NavigateToBrowsersTabByNumber(int nr)
{
driver.FindElement(By.TagName("body")).SendKeys(Keys.Control + nr);
driver.SwitchTo().Window(driver.WindowHandles[nr -1]);
}
主要问题是,只有当活动选项卡是第一个选项卡(窗口处理索引0)时,它才能工作。否则它将停留在当前选项卡上。如果我手动导航到第一个选项卡并切换到第一个句柄driver.SwitchTo().Window(driver.WindowHandles[0]);
,那么在调用该方法时,一切都会正常工作。
摘要:SendKeys
仅在聚焦第一个选项卡时才起作用。
我使用的是selenium网络驱动程序v2.48.1。
为什么不直接使用tabs.get函数,而不是发送击键?
public void NavigateToBrowsersTabByNumber(int n)
{
ArrayList tabs = new ArrayList (driver.getWindowHandles());
driver.switchTo().window(tabs.get(n-1));
}
第一个打开的选项卡应该自动具有焦点。但如果由于某种原因没有,你可以手动添加焦点,然后使用SendKeys。试试这个:
driver.SwitchTo().ActiveElement();
IWebElement body = driver.FindElement(By.TagName("body"));
body.SendKeys(Keys.Control + Keys.Tab);
这应该切换到下一个选项卡,或者如果您想切换到特定的选项卡,例如
body.SendKeys(Keys.Control + +Keys.NumberPad2);
这就是我在python中解决这个问题的方法。我只是调用该方法并将其传递给我想访问的选项卡
def switch_to_new_window(driver, window):
driver.switch_to_window(driver.window_handles[window])