我正在嘗試使用 Selenium 登錄我的 Instagram 帳戶。為此,我需要在登錄表單中填寫我的用戶名和密碼。
用戶名輸入欄有標簽input和name等于username。name有沒有辦法只使用屬性和標簽名稱來檢索這個輸入欄?我知道我可以使用 XPath 和類名,但我只想使用name屬性來執行此操作。
我嘗試了下面的代碼,但出現錯誤。
代碼:
username = driver.find_element(by = By.CSS_SELECTOR, value = "input[name = 'username']")
print(username.get_attribute("class"))
輸出:
File "d:\Personal\CS\Bots\Instabot\msg.py", line 17, in <module>
username = driver.find_element(by = By.CSS_SELECTOR, value = "input[name = 'username']")
編輯:
我也嘗試了類名和 XPath,但它們也不起作用
XPath:
username = driver.find_element(by = By.XPATH, value = '//*[@id="loginForm"]/div/div[1]/div/label/input')
print(username.get_attribute("class"))
班級:
username = driver.find_element(by = By.CSS_SELECTOR, value = 'input._2hvTZ pexuQ zyHYP')
print(username.get_attribute("class"))
我在這里做錯了什么?
uj5u.com熱心網友回復:
你沒看錯。電話號碼、用戶名或電子郵件 <input>欄位name設定為username。
<input aria-label="Phone number, username, or email" aria-required="true" autocapitalize="off" autocorrect="off" maxlength="75" name="username" type="text" class="_2hvTZ pexuQ zyHYP" value="">
因此,要定位元素,您可以使用以下任一Locator Strategies:
使用css_selector:
element = driver.find_element(By.CSS_SELECTOR, "input[name='username']")使用xpath:
element = driver.find_element(By.XPATH, "//input[@name='username']")
由于元素是理想的互動式元素,因此您需要為element_to_be_clickable()誘導WebDriverWait的元素,您可以使用以下任一定位器策略:
使用CSS_SELECTOR:
element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='username']")))使用XPATH:
element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@name='username']")))注意:您必須添加以下匯入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/457805.html
標籤:Python 硒 路径 css 选择器 网络驱动程序等待
