我正在尝试提取网址,将其打开到新标签页然后执行某些操作。我的代码是 -
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()
它会在新标签页中打开网址,但不对其执行操作。我该怎么办?
答案 0 :(得分:3)
您需要将焦点更改为新标签,因为它们通常会在后台打开。然后你需要抓住当前当前标签的句柄。
这描述为here:
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)