我正在创建一个命令,它将按数字导航到浏览器的选项卡。
public void NavigateToBrowsersTabByNumber(int nr)
{
driver.FindElement(By.TagName("body")).SendKeys(Keys.Control + nr);
driver.SwitchTo().Window(driver.WindowHandles[nr -1]);
}主要问题是,只有当活动选项卡是第一个选项卡时才能工作(windows句柄索引0)。否则,它将停留在当前选项卡上。如果我手动导航到第一个选项卡并切换到第一个处理driver.SwitchTo().Window(driver.WindowHandles[0]);,那么在调用该方法时,一切都将按照预期的方式工作。
摘要:
只有当第一个选项卡聚焦时,SendKeys才能工作。
我使用selenium : v2.48.1。
发布于 2015-12-09 15:58:04
为什么不直接使用tabs.get函数而不是发送击键呢?
`public void NavigateToBrowsersTabByNumber(int n) { ArrayList tabs = new ArrayList (driver.getWindowHandles()); driver.switchTo().window(tabs.get(n-1)); }`发布于 2015-12-09 16:29:44
第一个打开的选项卡应该自动具有焦点。但是,如果它不是出于某种原因,您可以手动向其添加焦点,然后使用SendKeys。试试这个:
driver.SwitchTo().ActiveElement();
IWebElement body = driver.FindElement(By.TagName("body"));
body.SendKeys(Keys.Control + Keys.Tab);这应该切换到下一个选项卡,或者如果您想切换到特定的选项卡e.a。
body.SendKeys(Keys.Control + +Keys.NumberPad2);发布于 2015-12-09 19:39:28
这就是我在python中解决这个问题的方法。我只需调用该方法并传递它我想要访问的选项卡。
def switch_to_new_window(driver, window):
driver.switch_to_window(driver.window_handles[window])https://stackoverflow.com/questions/34177960
复制相似问题