1 回答

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊
要將字符序列發(fā)送到用戶名或電子郵件和密碼?字段,您需要引入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("xxx@xx.com")
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("xxx@xx.com")
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()
注意:您必須添加以下導(dǎo)入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
這個(gè)用例
在這個(gè)用例中,行:
WebDriverWait(driver,?20).until(EC.element_to_be_clickable(Log)).click()
無(wú)法在所需的時(shí)間范圍內(nèi)識(shí)別所需的元素,因此您遇到了TimeoutException。
然而,從TimeoutException中很難挖掘出失敗的實(shí)際結(jié)果。
解決方案
作為了解失敗確切原因的解決方案,您需要?jiǎng)h除 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)
如果需要,您可以在調(diào)試時(shí)減慢搜索誘導(dǎo)等待的速度time.sleep(secs)
。
添加回答
舉報(bào)