【问题标题】:Selenium not able to find element硒找不到元素
【发布时间】:2021-08-17 23:15:57
【问题描述】:

大家好,我正试图在网站中找到一个元素,但由于某种原因它不允许我这样做。该网页是 Reddit 的登录表单,我尝试输入我的用户名和密码,但是当我列出所有输入时,它只出现在顶部搜索栏。我想这是因为它就像在另一个“标签”中一样,它会弹出到前面,但我不知道如何管理它。提前致谢。

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

chrome_options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications" : 2}
chrome_options.add_experimental_option("prefs",prefs)
driver = webdriver.Chrome(chrome_options=chrome_options)

driver.get('https://www.reddit.com')
driver.set_window_size(1200, 1300)

login_button = driver.find_element_by_link_text('Log In')
login_button.click()

username = driver.find_element_by_css_selector('input')
username.send_keys("test code to the form")

【问题讨论】:

    标签: python selenium selenium-webdriver web web-scraping


    【解决方案1】:

    点击登录按钮后,iframe 将打开,因此您首先必须切换到该iframe

    driver.switch_to.frame(driver.find_element_by_xpath("//iframe[contains(@src,'login')]"))
    

    还有一个问题是username = driver.find_element_by_css_selector('input'),因为input 不是唯一的css 选择器。
    试试这个:

    username = driver.find_element_by_css_selector('[id="loginUsername"]')
    

    另外,最好按如下方式定位登录按钮:

    login_button = driver.find_element_by_xpath('//a[contains(@href,"login")]')
    
    

    最后,输入用户名和密码后,别忘了从iframe切换到默认内容

    driver.switch_to.default_content()
    

    【讨论】:

    • 干杯伙伴,欣赏它。
    猜你喜欢
    • 2020-08-17
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    相关资源
    最近更新 更多