簡體   English   中英

Selenium Python 庫在登錄頁面上找不到元素

[英]Selenium Python library can't find elements on login page

我正在嘗試為 Cisco Webex 控制中心制作網絡抓取工具。 由於登錄頁面和后續頁面使用 Javascript,因此我使用 Selenium Python 庫來完成此操作。 不幸的是,我無法找到文本框並使用 Selenium 登錄按鈕元素。

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

# ブラウザを開く。
driver = webdriver.Chrome()
driver.get('https://admin.webex.com')

driver.find_element_by_class_name('md-input ng-pristine ng-invalid ng-touched').send_keys('email@address.com')

driver.find_element_by_class_name('md-panel__cta').click()

我還沒有太多代碼,但是我已經嘗試了各種方法來查找元素,但是我嘗試的任何方法都沒有奏效。 有什么原因我找不到元素嗎?

我已經繼續前進並完成了密碼輸入頁面的代碼。 但是,Cisco 制作每個頁面的方式各不相同,因此我無法重復使用用戶名輸入代碼中密碼輸入部分的代碼。

當一個元素有多個類時,用find_element_by_class_name('md-input ng-pristine ng-invalid ng-touched')這樣的類來定位元素不是一個好主意。

在這種情況下,xpath 或 cssSelector 是一個不錯的選擇:

driver.find_element_by_xpath("//input[@name='email']")

您的問題是頁面加載。 引起一些等待,否則您將錯過該元素。

WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "input.md-input"))).send_keys("email@address.com")

進口

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM