使用selenium打开新选项卡后,我试图在新选项卡中寻找元素-但脚本仍在从上一个选项卡搜索html脚本。我如何使它,使我打开一个新的选项卡后,它搜索打开选项卡的HTML,而不是以前的一个?
下面是我的代码(它不工作,因为我试图在新的选项卡上搜索一个元素,但脚本搜索它的第一个选项卡)。
options = webdriver.ChromeOptions()
options.add_argument("user-data-dir=C:\Users\jack_l\AppData\Local\Google\Chrome\User Data")
options.add_argument(r'--profile-directory=Profile 8')
driver = webdriver.Chrome(ChromeDriverManager().install(), options=options)
#Opens the Chrome browser
driver.get("https://www.beatstars.com/")
#Opens a new tab on the browser and goes to that URL
driver.execute_script("window.open('https://www.tunestotube.com/', 'new window')")
#Doesn't work since it's searching for a "tunestotube" element on "beatstars"
theText = driver.find_element(By.XPATH, "/html/body/div[2]/div[2]/div[2]").text
任何帮助都将是非常感激的。
driver.execute_script("window.open('https://www.tunestotube.com/', 'new window')")
driver.switch_to.window( driver.window_handles[1])
theText = driver.find_element(By.XPATH, "/html/body/div[2]/div[2]/div[2]").text
当你打开一个标签,你得到一个句柄,你需要切换回前一个句柄,然后找到你的元素。
找到解决方案:您需要切换到新窗口
下面的代码在第一个标签上获得一个网站,打开另一个网站的新标签,然后可以读取/查找新标签中的元素。
#Gets a browser and sets the window to a variable
driver.get("https://www.exampleWebsiteForFirstTab.com/")
window_before = driver.window_handles[0]
#Open a new tab and sets the window to a variable
driver.execute_script("window.open('https://www.exampleWebsiteForSecondTab.com/', 'new window')")
window_after = driver.window_handles[1]
#Switches the current window to the new tab
driver.switch_to.window(window_after)
###DO WHATEVER YOU WANT IN THE NEW TAB
#Switches the current window to the old tab
driver.switch_to.window(window_before)
希望这有助于任何人谁有同样的问题我做了!