使用带有Selenium的XPath打开新选项卡并从该选项卡中获取内容时出错

时间:2015-09-08 14:46:35

标签: python selenium xpath tabs

我在python中使用Selenium。我有一些超链接列表,我在这些超链接上迭代每个超链接并在新选项卡中打开该特定链接,然后使用Keys.CONTROL + Keys.SHIFT + Keys.RETURN.

将焦点放在新选项卡上

不幸的是,在新选项卡上使用xpath选择时,在新选项卡中打开链接失败:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from time import sleep  

list_links = self.driver(By.XPATH, "//a/" )
for link in list_links:
    link.send_keys(Keys.CONTROL + Keys.SHIFT + Keys.RETURN) #Open new Tab

    #get text from new tab webpage.
    sleep(50)
    data = self.driver.find_element(By.XPATH, "//span/" ).text #ERROR
    print data

我可以打开新标签并将焦点设置为新标签(这似乎有效)。但是当我尝试在新标签上使用XPath时,它会抛出:

  

NoSuchElementException:消息:没有这样的元素。

即使元素在那里可用。我不知道我在这里做错了什么。任何帮助都会很明显。

1 个答案:

答案 0 :(得分:1)

以下代码是在新标签页中打开链接在新打开标签页上重点关注,并从新打开的标签页中抓住XPATH

#Set current_window_handle to main tab
main_tab = driver.current_window_handle

# Get all links
list_links = self.driver(By.XPATH, "//a/" )

#Iterate over links
for element in list_links:

  # Open link in new tab 
  link.send_keys(Keys.CONTROL + Keys.SHIFT + Keys.RETURN)

  # Switch focus to newly opened tab using driver.window_handles[1]
  # driver.window_handles[1] => [1] for new tab index.
  driver.switch_to_window(driver.window_handles[1])

  /*** Do something OR Grabbing content using XPATH ***/

  #Now close newly opened tab
  driver.close()

  #Again switch to main tab/ previous tab
  driver.switch_to_window(main_tab)