当前位置: 首页 > 面试题库 >

使用Python Selenium登录到Yahoo

杭柏
2023-03-14
问题内容

我的问题实际上与使用Python SeleniumWebdrive登录到yahoo电子邮件帐户的情况相同

但是由于Yahoo更改了登录表单用户界面,因此上述链接中提供的答案对我不起作用。相反,我尝试了以下代码。

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

browser = webdriver.Firefox()
browser.get('https://login.yahoo.com')
emailElem = browser.find_element_by_id('login-username')
emailElem.send_keys('thisismyemail@yahoo.com')
emailElem.submit()

passwordElem = WebDriverWait(browser, 10).until(
    EC.presence_of_element_located((By.ID, "login-passwd"))
)
passwordElem.send_keys('thisismypassword')
passwordElem.submit()

wait = WebDriverWait(browser, 10)
wait.until(lambda browser: browser.current_url == "https://www.yahoo.com")
browser.get("https://mail.yahoo.com")

当我运行上面的代码时,它总是为我提供密码输入页面。我逐行执行了代码,我认为密码提交后的第二次等待不起作用。

在导航到Yahoo邮箱之前,需要您的建议如何在成功登录后将其更改为重定向到yahoo主页。谢谢!

后续问题: @DebanjanB和@Nimish
Bansal,非常感谢您的回答!我尝试过,您的答案都可以。我知道与我的代码的主要区别是将.submit()更改为.click()。但为什么?从Selenium-
Python文档(http://selenium-python.readthedocs.io/navigating.html#filling-in-
forms)中,两者的填写方式相同。 任何引用来详细说明.submit()和.click()之间的区别? 谢谢。


问题答案:

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

browser = webdriver.Chrome()
browser.get('https://login.yahoo.com')
emailElem = browser.find_element_by_id('login-username')
emailElem.send_keys('email@yahoo.in')
loginbtn=browser.find_element_by_id("login-signin")
loginbtn.click()


passwordElem = WebDriverWait(browser, 10).until(
    EC.presence_of_element_located((By.ID, "login-passwd"))
)
passwordElem.send_keys('password')
submitBtn=browser.find_element_by_id("login-signin")
submitBtn.click()

让按钮仅通过单击即可完成其工作,而不是提交整个表单



 类似资料:
  • 我有一个在Java设计的应用程序,我愿意使用用户名和密码登录AWS。我知道如何使用这里定义的默认安全凭据,但它对我的应用程序需求无效。有没有办法使用用户名和密码使用JavaAPI登录我的AWS帐户?

  • 问题内容: 我正在尝试使用Selenium来自动执行ESPN上的某些任务,由于要在访问ESPN页面时重定向到登录页面,因此我首先需要登录到我的帐户。这是登录表单: 这是我的python程序: 当我尝试查找“用户名”元素时,出现了NoSuchElementException。我尝试过在线查找。其他人建议切换框架,但是,登录表单似乎不在另一个框架中。 有任何想法吗? 问题答案: 下面的代码对我来说很好

  • 问题内容: 我正在一个springMVC项目中,其中用户身份验证基于Spring安全性。 这个想法是要拥有一个移动(android)应用程序,以便能够将某种数据发送到后端。 因此,在开始开发android之前,我决定使用cURL模拟登录表单的情况。 我们网站上的登录表单如下: 我使用以下命令: 但是我将获得登录页面,换句话说,我无法根据模拟情况通过用户身份验证。 只需注意:对于每一个请求,spri

  • 问题内容: 我已经广泛阅读了有关此操作的信息,并尝试了许多不同的版本,但无法使其正常工作。 基本上,我只想登录ConEdison网站并抓取我的帐单记录。这是我所拥有的: 我知道该信息是正确的(尽管我不知道是否真的需要传递没有值的数据参数)。 我没有任何错误,只是打印了登录页面(https://apps.coned.com/cemyaccount/NonMemberPages/Login.aspx?

  • 我有两个java webapps,它们运行在同一个jboss服务器上,但是在不同的域中: 主机:端口 1/上下文 1/ 主机:端口 2/上下文 2/ 两个网站的所有内容都通过使用JAAS登录模块进行保护。我现在想在app1中创建一个按钮,以转到app2上的页面。正如预测的那样,我会看到app2的登录屏幕。我可以成功登录。 然而,两个Web应用程序上的用户实际上是相同的。这意味着对app1有效的用户

  • 我想用selenium登录这个网页。我尝试了selenium的find_element_by_,并使用浏览器中的检查元素。但是我无法登录。我在搜索id、名称、类名,这样我就可以用send_keys传递数据,但是没有做到这些。有人能帮助我提供一些代码来将数据推送到所需的字段吗?谢谢。这就是我到目前为止所做的。 在此之后,我试图点击按钮登录使用 但它失败了。它给出了无法找到“登录”的错误。由于默认情况