Selenium 脚本在打开新选项卡后搜索上一个选项卡的 HTML
Selenium script searches previous tab's HTML after opening a new tab
使用 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
当您打开一个选项卡时,您会得到一个句柄,您需要切换回上一个句柄,然后找到您的元素。
找到解决方案:您需要切换到新的 window
下面的代码在第一个选项卡上获取一个网站,打开一个包含另一个网站的新选项卡,然后可以在该新选项卡中添加 read/find 个元素。
#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)
希望这能帮助遇到与我相同问题的任何人!
使用 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
当您打开一个选项卡时,您会得到一个句柄,您需要切换回上一个句柄,然后找到您的元素。
找到解决方案:您需要切换到新的 window
下面的代码在第一个选项卡上获取一个网站,打开一个包含另一个网站的新选项卡,然后可以在该新选项卡中添加 read/find 个元素。
#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)
希望这能帮助遇到与我相同问题的任何人!