python - 无法使用 Selenium 将文本发送到 Microsoft 登录页面上的电子邮件字段

标签 python google-chrome selenium selenium-webdriver selenium-chromedriver

我正在尝试找出一种方法来自动登录/在特定网页上的给定文本字段中输入文本。我以前没有这样做过,但是这个特定页面还没有响应我向它抛出的任何内容。

默认页面加载已经自动聚焦在必要的文本框上。我目前正在使用 Python 编写 Selenium 代码。我当前的脚本包括导致有问题的页面的先前进程,这是我当前的问题所在。此外,我一直在 Google-Chrome 浏览器中运行此代码,但用户代理选择为 Edge - Mobile(但这在这里可能并不重要)。

相关网站是 Microsoft 登录地址 this link .

相关文本框的 CSS/HTML:

<input type="email" name="loginfmt" id="i0116" maxlength="113" lang="en" class="form-control ltr_override" aria-describedby="usernameError loginHeader loginDescription" aria-required="true" data-bind="textInput: usernameTextbox.value,
                    hasFocusEx: usernameTextbox.focused,
                    placeholder: $placeholderText,
                    ariaLabel: tenantBranding.UserIdLabel || str['CT_PWD_STR_Username_AriaLabel'],
                    css: { 'has-error': usernameTextbox.error },
                    attr: inputAttributes" placeholder="Email, phone, or Skype" aria-label="Enter your email, phone, or Skype.">

在给定页面加载后,我当前正在测试的代码(基本上是同一想法的三个不同迭代):

element = driver.find_element_by_id("i0116")
element.click()
element.clear() 
element.send_keys("wbhyatt3@gmail.com")
element.send_keys(Keys.RETURN)

time.sleep(1)

element = driver.find_element_by_name("loginfmt") 
element.click()
element.clear()
element.send_keys("wbhyatt3@gmail.com")
element.send_keys(Keys.RETURN)

time.sleep(1)

element = driver.find_element_by_css_selector("input.email")
element.click() 
element.clear()
element.send_keys("wbhyatt3@gmail.com") 
element.send_keys(Keys.RETURN)

不幸的是,尝试通过输入 ID、类或名称选择文本框似乎不起作用。值得注意的是,我为文本框引用的页面 CSS 之前包含一个元素“input” - 我不确定这是否会影响我当前的代码。我相当确定要么是 send_keys 不起作用,要么是元素本身的选择不起作用。

让情况更令人沮丧的是,页面的默认焦点位于文本框上 - 所以我什至不需要真正选择该元素,我只需要能够输入文本并提交/输入。

我也尝试过将其定位为 iframe,但这似乎也没有帮助。

有什么想法吗?任何和所有的帮助将不胜感激。我只是想找到一种在登录框中输入文本的方法。

最佳答案

要在占位符文本为电子邮件、电话或 Skype 的字段中输入电子邮件 ID,您可以使用以下代码块:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("start-maximized")
options.add_argument("disable-infobars")
options.add_argument("--disable-extensions")
driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
driver.get('https://login.live.com/login.srf')
print("Page Title is : %s" %driver.title)
element = driver.find_element_by_xpath("//input[@class='form-control ltr_override' and @name='loginfmt']")
element.click()
element.clear()
element.send_keys("wbhyatt3@gmail.com")

控制台输出:

Page Title is : Sign in to your Microsoft account

快照:

Microsoft

关于python - 无法使用 Selenium 将文本发送到 Microsoft 登录页面上的电子邮件字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49584721/

相关文章:

python - 在 Django 中查询查询集?尝试返回一个步骤,然后返回它下面的子步骤

python - 更改 session 变量值失败

css - 使用 CSS 定位 SVG spritesheet

java - Selenium cssSelector 在 IDE 中有效,但在 Webdriver 中无效

Grails GEB 测试在后续运行中失败

python - 如何确定numpy数组的概率分布函数是什么?

python - 使用 psutil.Process.memory_info 内存使用情况与 Pandas.memory_usage 不同

javascript - 为什么我的 chrome 扩展程序不能使用 HTML5 postMessage 与我注入(inject)的框架进行通信?

css - Chrome tr 高度跳过像素

c# - 如何使用 Selenium C# PhantomJSDriver 设置 http referer header ?