在python中找不到具有selenium的元素

2024-05-03 12:53:37 发布

您现在位置:Python中文网/ 问答频道 /正文

标题说明了一切,我在python中找不到包含selenium的元素

这是我的代码:

    import time
    from selenium import webdriver
    from selenium.webdriver.chrome.service import Service
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.common.by import By
    
    s = Service("C:\Program Files (x86)\Chromedriver.exe")
    driver = webdriver.Chrome(service=s)
    
    driver.get("https://soundcloud.com/signin")
    driver.implicitly_wait(10)
    
    cookies = driver.find_element(By.ID, "onetrust-accept-btn-handler")
    if cookies.is_displayed():
        cookies.click()
        ...
    
    time.sleep(5)
    
    signup = driver.find_element(By.NAME, "Your email address or profile URL")
    signup.send_keys("test")

2条回答

你面临着这个例外

Unable to find element 

原因所需元素位于iframe中。所以首先切换到iframe,然后与所需的web元素交互。而且nameemail不是Your email address or profile URL

代码:

time.sleep(5)
driver.switch_to.frame(driver.find_element(By.XPATH, "//iframe[contains(@src,'https://secure.soundcloud.com/web-auth')]"))
time.sleep(5)
signup = driver.find_element(By.NAME, "email")
signup.send_keys("test")

同样,如果这样做有效,请尝试删除time.sleep(5)并改用WebDriverWait

如前所述,元素signup位于iframe中。您还可以使用索引切换到iframe

driver.implicitly_wait(10)
driver.get("https://soundcloud.com/signin")
driver.find_element_by_id("onetrust-accept-btn-handler").click()
driver.switch_to.frame(0) # Required singup element is in the 1st iframe.
driver.find_element_by_id("sign_in_up_email").send_keys("Sample Text")

相关问题 更多 >