我正在尝试使用Python(Selenium)从此站点提取数据: https://sin.clarksons.net/
我输入用户名和密码后,无法点击明显的“提交”底部。你们有些人可以帮忙看看为什么吗? TIA。
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
if __name__ == "__main__":
try:
chrome_path = r"C:\Users\xxx\Downloads\chromedriver_win32\chromedriver.exe"
driver = webdriver.Chrome(chrome_path)
driver.get("https://www.clarksons.net/")
driver.maximize_window()
time.sleep(5)
login = driver.find_element_by_xpath('//*[@id="menu"]/li[1]/span')
time.sleep(5)
login.click()
time.sleep(5)
username = driver.find_element_by_xpath('//input[@id="usernameText"]')
username.clear()
username.send_keys("abc(at)hotmail.com")
password = driver.find_element_by_xpath('/html/body/div[6]/div/div/div[2]/form/div[2]/div/input[1]')
password.clear()
password.send_keys("xyzabc")
submit = driver.find_element_by_xpath('/html/body/div[6]/div/div/div[2]/form/div[4]/div/div/button')
submit.click()
time.sleep(5)
print "login"
driver.quit()
except Exception as e:
print e
driver.quit()
答案 0 :(得分:1)
尝试使用id替换xpath并使用css选择器登录按钮
username = driver.find_element_by_id("usernameText")
username.clear()
username.send_keys("vivi.sandsten@gard.no")
password = driver.find_element_by_id("passwordText")
password.clear()
password.send_keys("xyzabc")
#submit = driver.find_element_by_xpath(".//button[@title='Login']")
submit = driver.find_element_by_css_selector("#home button.btn-
primary")
submit.click()
答案 1 :(得分:0)
您可以按标题找到登录按钮:
submit = driver.find_element_by_xpath('//button[contains(@title, "Login")]')
submit.click()
或者你可以找到表格,然后提交(找到基础上的课程):
submit_form = driver.find_element_by_xpath('//form[starts-with(@class, "ng-valid ng-dirty")]')
submit_form .submit()
希望得到这个帮助。
答案 2 :(得分:0)
您使用的xpath
是错误的,正确的是
'/html/body/div[6]/div/div/div[2]/form/div[4]/button'
作为旁注,你真的不应该使用绝对xpath
,例如你可以使用'//button[@title="Login"]'
作为登录按钮。