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("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, "//a[text()='Log in']"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='login_form_username_email']"))).send_keys("xxx@xx.com")
driver.find_element_by_xpath("//input[@id='login_form_password']").send_keys("123456")
driver.find_element_by_xpath("//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)
。
添加回答
举报