当前位置: 首页 > 知识库问答 >
问题:

在selenium中切换和聚焦新打开的选项卡

索和璧
2023-03-14

您好,我正在使用selenium单击链接,通常使用在线web应用程序。

当我单击打开新选项卡的特定链接并在新打开的选项卡中执行操作时,我会遇到问题。我有以下代码:

friend_link = browser.find_element_by_tag_name('a')
friend_link.click() # this is where new tab is opened

之后,网络驱动程序(从我的眼睛)打开到新标签,而我不必调用

browser.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.TAB)

所以一切都好。新标签会在WebDrive上打开。当我尝试单击新打开的选项卡上的链接时,我得到一个“无元素”异常,这意味着它找不到我要找的元素。

两个问题:

1) webdriver是否知道新打开的选项卡已打开,并在该选项卡上执行操作?也许我必须告诉你。我试过了

main_window = browser.current_window_handle
browser.switch_to_window(main_window)

这应该是重新关注一个新打开的标签,但没有运气。

2) 有没有办法看看电脑是否知道它在新的账单上?

共有1个答案

余阳秋
2023-03-14

检查驱动程序。窗口句柄如果返回多个实例,则第二个实例应为新打开的选项卡。使用驱动程序。将\u切换到\u窗口(实例id)进行切换。见下文:

>>> driver.window_handles
[u'CDwindow-608A7C64-A633-4DEC-B88F-6A2578C47669']
>>> driver.window_handles
[u'CDwindow-608A7C64-A633-4DEC-B88F-6A2578C47669', u'CDwindow-A2A95622-3146-4BF6-9E7A-7A6632A73C86']
>>> driver.current_window_handle
u'CDwindow-608A7C64-A633-4DEC-B88F-6A2578C47669'
>>> driver.switch_to.window("CDwindow-A2A95622-3146-4BF6-9E7A-7A6632A73C86")
>>> driver.current_window_handle
u'CDwindow-A2A95622-3146-4BF6-9E7A-7A6632A73C86'
>>> driver.get("http://www.amazon.com")
 类似资料:
  • 打开 Chrome 和新标签页: < br >在Python 2.7.11中使用Selenium,我在chrome中打开了两个选项卡。我可以访问单个选项卡(转到新的URL),但我无法聚焦于选定的选项卡。例如,当我打开一个新标签页时,它会成为焦点。当我使用< code > driver . switch _ to . window(driver . window _ handles[0])选择第一个

  • 我正在处理用于Excel VBA的Selenium Basic Wrapper,但是在单击打开新选项卡的按钮时,我无法让Selenium Web驱动程序将焦点切换到打开的新选项卡上,并关闭原始选项卡。我相信使用Java Selenium应该可以实现这一点,但是有没有办法通过excel VBA上的Selenium基本包装来实现呢? 只需要Selenium将焦点切换到新打开的标签上,并关闭旧的/原始的

  • 另外,我想请求关注textArea,每次用户打开/关闭选项卡,并在选项卡之间切换(使用鼠标和键盘热键)。 这不起作用。我尝试了tab.getContent().requestFocus()-也不起作用。 关于当TabPane child处于焦点时更改选项卡:TabPane似乎得到了KeyEvent,但因为它不在焦点中(textArea处于焦点中),它只是跳过了这个事件。也许我可以通过在TabPan

  • 我从当前页面的链接中打开了一个新选项卡。选项卡打开了,但焦点没有转移到该选项卡上,我也无法使用以下两种方法切换选项卡。我在用铬。

  • 出于自动化的目的,我正在创建一个在表中查找一行的脚本。此行是可单击的,并打开一个新的选项卡/地址。 使用selenium,我现在可以找到表行,单击链接,然后打开新的选项卡。问题是我找不到任何方法将焦点切换到新打开的选项卡。我试图获得所有的windowhandle,看看我是否可以切换,但即使在新标签打开后,只有一个windowhandle。 Arraylist始终包含1个windowHandle,而

  • 所以我试图在我的WebDriver中打开新的标签页。我想这样做,因为打开一个新的WebDriver为每个网站使用PhantomJS约3.5秒,我想要更快... 我使用的是一个多进程python脚本,我希望从每个页面中获取一些元素,因此工作流如下所示: