如何通过Selenium python登录yahoo(尝试了多种解决方案)

时间:2019-05-09 21:02:17

标签: python selenium xpath selenium-chromedriver

我正在尝试通过硒登录到我的Yahoo帐户。我现在只是在学习,并且已经为不同的网站制作了程序,以使总体上更熟悉Selenium。

我现在正尝试登录Yahoo,但无法弄清楚。

URL:https://login.yahoo.com/

我尝试做:

yahoologin1 = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, "#login-username"))).sendKeys("tester@yahoo.com")

yahoologin1 = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, "login-username"))).sendKeys("tester@yahoo.com")

yahoologin1 = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, "//input[@id='login-username']"))).sendKeys("tester@yahoo.com")

yahoologin1 = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, "/html[1]/body[1]/div[2]/div[1]/div[1]/form[1]/div[2]/input[1]"))).sendKeys("tester@yahoo.com")

我特别想念什么吗?如果有人告诉我如何使该登录信息正常工作,将不胜感激。而不是简单地粘贴代码:)谢谢!

我已经做了一些进一步的测试,并且在主选项卡上可以使用。但是,我正在使用yahoo登录页面打开一个新标签页,该标签页无效。要在新标签页上键入内容,我需要做些其他的事情吗?

2 个答案:

答案 0 :(得分:1)

我使用了另一种没有WebDriverWait的方法来解决,希望对您有所帮助。

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--window-size=1920x1080")
browser = webdriver.Chrome('./chromedriver', chrome_options=chrome_options)

# Opening yahoo page in a new tab
browser.execute_script("window.open('https://login.yahoo.com/');")
# Switch to new tab
browser.switch_to.window(browser.window_handles[-1])
# Selecting login-username and putting email
browser.find_element_by_id('login-username').send_keys('tester@yahoo.com')

结果:

Result

答案 1 :(得分:0)

这是示例脚本。

url = "https://login.yahoo.com/"
# Step 1 -navigate to the AUT
driver.get(url)
print ("Step 1 - Done")
# Step 2 - Enter the username
#wait for the user name to be displayed
userName = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'input#login-username')))
userName.send_keys("used css")
# Step 3 - click on Next
driver.find_element_by_xpath("//input[@id='login-signin']").click()
# Step 4 - Enter password
passWord = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,"input[name='password']")))
passWord.send_keys("password")
# Step 5 - Click on Sign in
driver.find_element_by_id("login-signin").click()

在这里,您可以快速有效地进行脚本开发。

  • 在浏览器导航到url之后保留断点 enter image description here
  • 使用chrome devtools获取元素xpath,请参考here了解如何进行测试并获取xpath
  • 转到控制台>单击show python prompt以打开交互式控制台 enter image description here
  • 在此处输入代码,然后按Enter键以检查将其放入脚本中时该行是否有效 enter image description here enter image description here

  • 进行必要的更改并确认该步骤有效 enter image description here

  • 将复制步骤从交互式控制台复制粘贴到脚本 enter image description here