我们开发了一个Chrome扩展程序,我想用Selenium测试我们的扩展程序。我创建了一个测试,但是问题是我们的扩展程序在安装后会打开一个新选项卡,我认为我从另一个选项卡中得到了例外。是否可以切换到我正在测试的活动标签?另一个选择是先禁用扩展名,然后登录到我们的网站,然后再启用该扩展名。可能吗?这是我的代码:
def login_to_webapp(self):
self.driver.get(url='http://example.com/logout')
self.driver.maximize_window()
self.assertEqual(first="Web Editor", second=self.driver.title)
action = webdriver.ActionChains(driver=self.driver)
action.move_to_element(to_element=self.driver.find_element_by_xpath(xpath="//div[@id='header_floater']/div[@class='header_menu']/button[@class='btn_header signature_menu'][text()='My signature']"))
action.perform()
self.driver.find_element_by_xpath(xpath="//ul[@id='signature_menu_downlist'][@class='menu_downlist']/li[text()='Log In']").click()
self.driver.find_element_by_xpath(xpath="//form[@id='atho-form']/div[@class='input']/input[@name='useremail']").send_keys("[email]")
self.driver.find_element_by_xpath(xpath="//form[@id='atho-form']/div[@class='input']/input[@name='password']").send_keys("[password]")
self.driver.find_element_by_xpath(xpath="//form[@id='atho-form']/button[@type='submit'][@class='atho-button signin_button'][text()='Sign in']").click()
测试失败ElementNotVisibleException: Message: element not visible
,原因是,因为在新选项卡(由扩展名打开)中,“登录”不可见(我认为仅在命令后才打开新选项卡self.driver.get(url='http://example.com/logout')
)。
更新 :我发现该异常与多余的选项卡无关,它来自我们的网站。但是根据@aberna的回答,我用此代码关闭了额外的标签:
def close_last_tab(self):
if (len(self.driver.window_handles) == 2):
self.driver.switch_to.window(window_name=self.driver.window_handles[-1])
self.driver.close()
self.driver.switch_to.window(window_name=self.driver.window_handles[0])
关闭多余的标签后,我可以在视频中看到我的标签。
一些可能的方法:
1- 使用send_keys(CONTROL + TAB)在选项卡之间切换
self.driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.TAB)
2- 使用ActionsChains(CONTROL + TAB)在选项卡之间切换
actions = ActionChains(self.driver)
actions.key_down(Keys.CONTROL).key_down(Keys.TAB).key_up(Keys.TAB).key_up(Keys.CONTROL).perform()
3- 另一种方法可以利用Selenium方法来检查当前窗口并移至另一个窗口:
您可以使用
driver.window_handles
查找窗口句柄列表,然后尝试使用以下方法进行切换。
- driver.switch_to.active_element
- driver.switch_to.default_content
- driver.switch_to.window
例如,要切换到最后打开的选项卡,您可以执行以下操作:
driver.switch_to.window(driver.window_handles[-1])
我想从一个选项卡切换到另一个选项卡,需要切换回上一个选项卡。 所以,请给我同样的指导。
我打开Google.com,然后点击“Gmail”超链接,一个新的标签就在同一浏览器上打开了。 现在我想切换到这个新选项卡,在这里使用Selenium WebDriver打开GMail。 解决方案2: 敬请建议。我被困在这上面了。
打开 Chrome 和新标签页: < br >在Python 2.7.11中使用Selenium,我在chrome中打开了两个选项卡。我可以访问单个选项卡(转到新的URL),但我无法聚焦于选定的选项卡。例如,当我打开一个新标签页时,它会成为焦点。当我使用< code > driver . switch _ to . window(driver . window _ handles[0])选择第一个
问题内容: 我已经开发了这段代码,用于将所有搜索结果打开到新标签中: 我想要的是当我打开所有带有搜索结果的选项卡时,我想在所有选项卡之间切换并延迟2秒。 我该如何实施? 问题答案: 试试这个代码,
我从当前页面的链接中打开了一个新选项卡。选项卡打开了,但焦点没有转移到该选项卡上,我也无法使用以下两种方法切换选项卡。我在用铬。