0

单击登录按钮时,会弹出一个窗口,显示使用 google 登录。我需要使用弹出窗口的谷歌按钮访问登录。我已经展示了一些使用driver.switch_to_window方法和iframe方法处理弹出窗口的先前示例。但无法访问弹出窗口中的元素。

下面的代码显示noSuchElementException

import time

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait as wait

from time import sleep

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://shatkora.co/grocery")

main_window=None
while not main_window:
    main_window=driver.current_window_handle

join_btn=driver.find_element_by_xpath("/html/body/div[1]/div[1]/div/div[1]/div/header/div/button")
join_btn.click()

login_window=None;
while not login_window:
    for handle in driver.window_handles:
        if(handle!=main_window):
            login_window=handle
            break

# driver.switch_to(login_window)

driver.switch_to.window(login_window)



login_with_google_button=driver.find_element_by_xpath("/html/body/div[1]/div[1]/div/div[6]/div/div/div/div[1]/button")
login_with_google_button.click()

4

1 回答 1

0

您不需要,也可以使用switch to any windows绝对xpathexplicit waits.

driver = webdriver.Chrome(driver_path)
driver.maximize_window()
driver.get("https://shatkora.co/grocery")
wait = WebDriverWait(driver, 20)

join_btn = wait.until(EC.element_to_be_clickable((By.XPATH, "//button[text()='Join']")))
join_btn.click()

time.sleep(5)


button = driver.find_element_by_xpath("//h3[text()='Welcome to Shatkora!']/following-sibling::button")
driver.execute_script("arguments[0].click();", button)

在此代码之后,您将不得不切换到新窗口,这可以通过以下代码完成:

handles = driver.window_handles
driver.switch_to.window(handles[1])
于 2021-09-02T06:24:28.910 回答