当前位置: 首页 > 面试题库 >

在选项卡之间切换并使用Selenium对单个对象执行操作

韦翰音
2023-03-14
问题内容

我正在尝试提取URL,将其打开到新选项卡中,然后执行一些操作。我的代码是-

urls = self.driver.find_elements_by_xpath('//div[@id="maincontent"]/table/tbody/tr/td//a[@href]')
        for url in urls:

            try:
                href = url.get_attribute("href")[28:]
                print href
                actions = ActionChains(self.driver)
                url_1 = self.driver.find_element_by_xpath('//*[@href="'+href+'"]')
                actions.key_down(Keys.CONTROL).click(url_1).key_up(Keys.CONTROL).perform()
            except Exception, e:
                print e

        actions1 = ActionChains(self.driver)      
        actions1.key_down(Keys.CONTROL).key_down(Keys.TAB).key_up(Keys.TAB).key_up(Keys.CONTROL).perform()
        print "hi"
        show_report = self.driver.find_element_by_xpath('//*[@value="Show Report(s)"]')
        show_report.click()

它会在新选项卡中打开URL,但不会对其执行任何操作。我该怎么办??


问题答案:

您需要将焦点更改为新标签,因为它们通常会在后台打开。然后,您需要抓住当前当前选项卡的句柄。

这在这里描述:

>     import selenium.webdriver as webdriver
>     import selenium.webdriver.support.ui as ui
>     from selenium.webdriver.common.keys import Keys
>     from time import sleep  
>  
>     browser = webdriver.Firefox()
>     browser.get('https://www.google.com?q=python#q=python')
>     first_result = ui.WebDriverWait(browser, 15).until(lambda browser:
> browser.find_element_by_class_name('rc'))
>     first_link = first_result.find_element_by_tag_name('a')
>  
>     # Save the window opener (current window, do not mistaken with tab...
> not the same)
>     main_window = browser.current_window_handle
>  
>     # Open the link in a new tab by sending key strokes on the element
>     # Use: Keys.CONTROL + Keys.SHIFT + Keys.RETURN to open tab on top of the
> stack
>     first_link.send_keys(Keys.CONTROL + Keys.RETURN)
>  
>     # Switch tab to the new tab, which we will assume is the next one on the
> right
>     browser.find_element_by_tag_name('body').send_keys(Keys.CONTROL +
> Keys.TAB)
>  
>     # Put focus on current window which will, in fact, put focus on the
> current visible tab
>     browser.switch_to_window(main_window)
>  
>     # do whatever you have to do on this page, we will just got to sleep for
> now
>     sleep(2)
>  
>     # Close current tab
>     browser.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 'w')
>  
>     # Put focus on current window which will be the window opener
>     browser.switch_to_window(main_window)


 类似资料:
  • 我需要在浏览器选项卡之间切换,使用以下代码, 它有时只是正常工作,但有时表现出异常。有谁能建议我使用Java在一个窗口内切换选项卡的其他说明吗。

  • 确切错误消息:线程“main”java中出现异常。lang.IndexOutOfBoundsException:索引:1,大小:1(java)。util。ArrayList。rangeCheck(ArrayList.java:653) 代码段:

  • 问题内容: 我需要在浏览器标签之间切换,使用以下代码, 它有时仅工作正常,但有时却显示异常。任何人都可以建议我使用Java在单个窗口中切换选项卡是否还有其他说明。 问题答案: 您必须在此处使用窗口句柄功能。这是Java中的示例工作代码: 希望这可以帮助!

  • 我写了示例代码,但它不起作用。还观察到2个选项卡只有1个窗口句柄。如何再次切换到父页签?

  • 将Selenium WebDriver与Java结合使用。我正在尝试自动化一个功能,其中我必须打开一个新的选项卡,在那里做一些操作,并回到以前的选项卡(父)。我用了开关手柄,但它不起作用。还有一件奇怪的事情,两个选项卡有相同的窗口句柄,因此我不能在选项卡之间切换。 然而,当我尝试使用不同的Firefox窗口时,它都能工作,但是对于tab它就不行了。 请帮帮我.我如何切换标签。或者我如何切换选项卡而

  • 因此,我正在测试一个web应用程序,我必须打开一个新的选项卡,切换到它,做一些输入,然后切换回第一个选项卡,这不止一次。我尝试通过以下方式打开新选项卡: 这将导致出现以下警报: 但我无法通过Appium的自动化来接受它。我尝试过的事情: 使用以下功能:“safariAllowPopups”和“AutoAcceptablers” 在iOS sim卡中更改safari的相应设置 .switchTo()