我正在尝试提取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)