如何通过Selenium将字符序列发送到url中的用户名和密码字段?

时间:2018-08-24 21:10:47

标签: python selenium selenium-webdriver css-selectors webdriver

我尝试登录https://login.economicmodeling.com/login/login.php,但是输入的用户名没有显示,运行命令输入密码后,它会自动打开一个新标签,而无需实际输入密码。有人可以帮忙吗?谢谢!

from selenium import webdriver
driver = webdriver.Safari()
driver.get("https://login.economicmodeling.com/login/login.php")
driver.find_element_by_class_name("cc-btn cc-dismiss").click()
user = driver.find_element_by_css_selector('input[name = user]')
password = driver.find_element_by_css_selector('input[name = password]')
user.clear()
user.send_keys('xxx')
password.clear()
password.send_keys('xxx')
driver.find_element_by_id("submitbutton").click()

2 个答案:

答案 0 :(得分:0)

在“用户”和“密码”属性周围缺少单引号。

user = driver.find_element_by_css_selector("input[name='user']")
password = driver.find_element_by_css_selector("input[name='password']")

发送表单应该通过提交完成,而不是单击。

driver.find_element_by_id("submitbutton").submit()

答案 1 :(得分:0)

根据您要登录https://login.economicmodeling.com/login/login.php的问题,您需要诱使 WebDriverWait 使所需的元素可点击,并且可以使用以下解决方案:< / p>

  • 代码块:

    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
    
    
    options = webdriver.ChromeOptions() 
    options.add_argument("start-maximized")
    options.add_argument('disable-infobars')
    driver=webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    driver.get("https://login.economicmodeling.com/login/login.php")
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.fancy.form#userinput"))).send_keys('xxx')
    driver.find_element_by_css_selector('input.fancy.form#passwordinput').send_keys('xxx')
    driver.find_element_by_css_selector("input.submit.button.success#submitbutton").click()
    
  • 浏览器快照:

emsi