Python 3.x 尝试使用Selenium登录,但不起作用

Python 3.x 尝试使用Selenium登录,但不起作用,python-3.x,selenium,xpath,css-selectors,webdriverwait,Python 3.x,Selenium,Xpath,Css Selectors,Webdriverwait,我正在尝试使用selenium登录woolworths网站。但在输入电子邮件和密码后,当我点击登录按钮时,什么也没发生。我已经尝试了在互联网上能找到的一切,但都没有用。这是一个简单的登录,但现在它让我抓狂。 我正在分享以下代码: driver = webdriver.Chrome() driver.get("https://www.woolworths.com.au/shop/securelogin") loginform = driver.find_element_by_i

我正在尝试使用selenium登录woolworths网站。但在输入电子邮件和密码后,当我点击登录按钮时,什么也没发生。我已经尝试了在互联网上能找到的一切,但都没有用。这是一个简单的登录,但现在它让我抓狂。 我正在分享以下代码:

driver = webdriver.Chrome()
driver.get("https://www.woolworths.com.au/shop/securelogin")
loginform = driver.find_element_by_id('loginForm')
user = loginform.find_element_by_id("loginForm-Email")
user.send_keys("myemail")
pas = loginform.find_element_by_id("loginForm-Password")
pas.send_keys("mypass")
pas.submit()
图片:


要登录网站,您必须使
元素可点击()
,并且您可以使用以下任一选项:

  • 使用
    CSS\u选择器

    driver.get('https://www.woolworths.com.au/shop/securelogin')
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#loginForm-Email"))).send_keys("myemail")
    driver.find_element_by_css_selector("input#loginForm-Password").send_keys("mypass")
    driver.find_element_by_css_selector("button[type='submit']").click()
    
  • 使用
    XPATH

    driver.get('https://www.woolworths.com.au/shop/securelogin')
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='loginForm-Email']"))).send_keys("myemail")
    driver.find_element_by_xpath("//input[@id='loginForm-Password']").send_keys("mypass")
    driver.find_element_by_xpath("//button[@type='submit']").click()
    
  • 注意:您必须添加以下导入:

      from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.common.by import By
      from selenium.webdriver.support import expected_conditions as EC
    
浏览器快照:


我面临着一个类似的问题,我只能说这有两个根源:互联网连接薄弱,或者服务器是个懒汉。 您可以尝试添加一个等待,直到登录按钮内的加载图标消失(您需要为其创建一个定位器),或者基于javascript执行单击操作:

driver.execute_script("document.getElementsByName('locator_name')[0].click();")

要单击登录按钮,请使用以下xpath:

login= driver.find_element_by_xpath("//*[@id='loginForm']/fieldset/div/shared-button/button")
and then try:
login.submit()

这不是问题。。正如你在他的截图中看到的,他点击了登录按钮,加载微调器出现在后面,而不是“登录”文本。按下登录按钮后,微调器出现在登录按钮文本的位置,并且不会发生任何事情。@Razvan在发送登录请求之前,将通过
onclick
事件验证用户名和密码。因此,除非您向我们提供工作凭证的演示集,否则我们将无法重新处理加载问题。我们只能帮助您点击所需的按钮。我可以手动登录网站。单击“登录”按钮后手动登录需要2秒钟的时间。但是,当我尝试使用selenium登录时,在按下login按钮后,微调器会替换按钮中的文本,而不会发生任何事情。互联网连接也很好。嗯,但是如果你在另一个浏览器上运行它,也是同样的情况吗?我也可以手动复制。尝试使用Firefox而不是ChromeNot。我尝试了chrome和firefox。