1 回答

TA貢獻1871條經驗 獲得超13個贊
要將字符序列發送到用戶名或電子郵件和密碼?字段,您需要引入WebDriverWait并且element_to_be_clickable()
您可以使用以下任一定位器策略:
使用CSS_SELECTOR:
driver.get("https://poshmark.com/")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a[href='/login']"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#login_form_username_email"))).send_keys("[email protected]")
driver.find_element_by_css_selector("input#login_form_password").send_keys("123456")
driver.find_element_by_css_selector("button.btn.blue.btn-primary").click()
使用XPATH:
driver.get("https://poshmark.com/")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "http://a[text()='Log in']"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "http://input[@id='login_form_username_email']"))).send_keys("[email protected]")
driver.find_element_by_xpath("http://input[@id='login_form_password']").send_keys("123456")
driver.find_element_by_xpath("http://button[@class='btn blue btn-primary']").click()
注意:您必須添加以下導入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
這個用例
在這個用例中,行:
WebDriverWait(driver,?20).until(EC.element_to_be_clickable(Log)).click()
無法在所需的時間范圍內識別所需的元素,因此您遇到了TimeoutException。
然而,從TimeoutException中很難挖掘出失敗的實際結果。
解決方案
作為了解失敗確切原因的解決方案,您需要刪除 WebDriverWait并將代碼行替換為:
find_element_by_class_name(name)
find_element_by_css_selector(css_selector)
find_element_by_id(id)
find_element_by_link_text(link_text)
find_element_by_name(name)
find_element_by_partial_link_text(partial_link_text)
find_element_by_tag_name(tag_name)
find_element_by_xpath(xpath)
如果需要,您可以在調試時減慢搜索誘導等待的速度time.sleep(secs)
。
添加回答
舉報