如何通过硒在Chrome上获取当前活动的标签索引?



我正在创建半自动的应用程序(用户正在打开选项卡(注意(,如果他想转储其中一个,他只需单击热键(。

但是当用户打开很多选项卡时,我需要知道我应该切换到哪个选项卡。 如何获取当前选项卡索引。或者切换到Selenium C#上的当前选项卡?

string windowHandle = Browser.WindowHandles.Last();
string windowHandle = Browser.WindowHandles.First();
string windowHandle = Browser.WindowHandles[1];

。 对我不起作用。

每次调用Browser.WindowHandles()时,当前选项卡索引可能会更改。

虽然一般的看法是窗口句柄会像最旧的窗口一样排序,最后是最新的窗口。但事实并非如此:这完全是随机的!

在一次讨论中,西蒙明确提到:

虽然用于存储句柄列表的数据类型可以按插入顺序排序,但 WebDriver 实现循环访问窗口句柄以插入它们的顺序不需要稳定。排序是任意的。

此注释与它提到的"获取窗口句柄"部分非常一致:

为了确定与浏览器的特定交互是否打开新窗口,可以在执行交互之前获取窗口句柄集,并将其与执行操作后的集合进行比较。

您可以在使用 Selenium 使用 WindowHandle 跟踪和迭代选项卡和窗口的最佳方式中找到相关的详细讨论


更新

根据您的评论用户切换选项卡(在窗口中(,但驱动程序仍然专注于另一个选项卡,您需要诱导WebDriverWaitfornumberOfWindowsToBe(n),您可以在 getWindowHandles(( 中找到详细的讨论,在 Firefox 58 中不起作用.焦点仍保留在父选项卡上,不会转移到下一个选项卡

最新更新