Python selenium问题:能够找到元素而不是send_keys

时间:2017-11-25 10:00:44

标签: python selenium

我正在尝试登录ESPN footytips网站,以便我可以抓取其中一个联赛的信息。

我在打开Chrome实例并导航到主页(包含登录表单)时没有任何问题,甚至可以选择用户名字段,但我不能在我的生活中将我的登录详细信息发送到表单。

在调试中我知道我可以找到并选择表单提交按钮,问题似乎在于使用send_keys传递我的登录详细信息,因为我的异常规则总是在我尝试调用send_keys后触发。

欢迎任何关于如何解决的建议!我的脚本如下:

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys

    login_address = "http://www.footytips.com.au/home"
    me_login = "test@test.com"
    me_password = "N0TMYR3@LP@S5W0RD"

    browser = webdriver.Chrome()
    browser.get(login_address)

    try:
        login_field = browser.find_element_by_id("ft_username")
        password_field = browser.find_element_by_id("ft_password")
        print("User login fields found")

        login_field.send_keys(me_login)
        password_field.send_keys(me_password)
        print("Entered login data")

        submit_button = browser.find_element_by_id("signin-ft")
        print("Submit button found")
        submit_button.submit()

    except:
        print("Error: unable to enter form data")

1 个答案:

答案 0 :(得分:0)

您使用的定位器并不能唯一标识login_fieldpassword_field。此外,您需要等待相应的WebElements可见。这是你自己的代码,有一些调整:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
#lines of code
login_address = "http://www.footytips.com.au/home"
me_login = "test@test.com"
me_password = "N0TMYR3@LP@S5W0RD"
browser.get(login_address)
login_field = WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.XPATH,"//div[@class='login-form']//input[@id='ft_username']")))
password_field = browser.find_element_by_xpath("//div[@class='login-form']//input[@id='ft_password']")
login_field.send_keys(me_login)
password_field.send_keys(me_password)
print("Entered login data")