首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按给定的编号导航到浏览器窗口选项卡

按给定的编号导航到浏览器窗口选项卡
EN

Stack Overflow用户
提问于 2015-12-09 11:41:35
回答 3查看 947关注 0票数 0

我正在创建一个命令,它将按数字导航到浏览器的选项卡。

代码语言:javascript
复制
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。

EN

回答 3

Stack Overflow用户

发布于 2015-12-09 15:58:04

为什么不直接使用tabs.get函数而不是发送击键呢?

代码语言:javascript
复制
 `public void NavigateToBrowsersTabByNumber(int n)     {         ArrayList tabs = new ArrayList (driver.getWindowHandles());         driver.switchTo().window(tabs.get(n-1));     }`
票数 0
EN

Stack Overflow用户

发布于 2015-12-09 16:29:44

第一个打开的选项卡应该自动具有焦点。但是,如果它不是出于某种原因,您可以手动向其添加焦点,然后使用SendKeys。试试这个:

代码语言:javascript
复制
    driver.SwitchTo().ActiveElement();
    IWebElement body = driver.FindElement(By.TagName("body"));
    body.SendKeys(Keys.Control + Keys.Tab);

这应该切换到下一个选项卡,或者如果您想切换到特定的选项卡e.a。

代码语言:javascript
复制
    body.SendKeys(Keys.Control + +Keys.NumberPad2);
票数 0
EN

Stack Overflow用户

发布于 2015-12-09 19:39:28

这就是我在python中解决这个问题的方法。我只需调用该方法并传递它我想要访问的选项卡。

代码语言:javascript
复制
def switch_to_new_window(driver, window):
    driver.switch_to_window(driver.window_handles[window])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34177960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档