【问题标题】:Not able to enter text when style=display: inline-block; with Webdriver Selenium当 style=display: inline-block; 时无法输入文本使用 Webdriver Selenium
【发布时间】:2017-03-01 03:09:35
【问题描述】:

以下是网站的 HTML:

<td class="loginPassword">
<input name="_ctl0$MainContentPlaceHolder$oSession$oPwdID" type="password" maxlength="50" id="oPwdID" tabindex="2" class="signin login-input-rounded" autocomplete="off" data-i18n="[title]LoginPage.Password" title="Password" style="display: none;">
<input name="_ctl0$MainContentPlaceHolder$oSession$txtPlainPassword" type="text" id="txtPlainPassword" tabindex="2" class="graytext login-input-rounded" data-i18n="[value]LoginPage.Password" value="Password" style="display: inline-block;">
<input type="hidden" name="_ctl0$MainContentPlaceHolder$oSession$elqCustomerGUID" id="elqCustomerGUID"></td>

这是我的代码:

findPasswordField = driver.find_element_by_id("txtPlainPassword").click()

driver.execute_script("document.querySelector('#txtPlainPassword').style.display='block';")

driver.find_element_by_id("txtPlainPassword").send_keys("papsp")

它点击了密码元素,但没有输入字符串“papsp”。

它会抛出以下错误消息:

selenium.common.exceptions.WebDriverException: Message: unknown error: cannot focus element

我尝试使用以下 stackoverflow 答案,这里是 a link

我不确定我做错了什么,我认为它应该可以工作。

如果有任何不清楚或需要更多信息,请告诉我。

【问题讨论】:

  • 一般来说,您不希望使用 JSE 来更改元素的状态,因为用户不会以这种方式与页面交互。找出元素如何启用、可见等并对其进行编码。如果您要分享该页面的链接,我们可以看看。
  • 为什么不用JS直接设置值呢?

标签: python selenium selenium-webdriver


【解决方案1】:

您正在尝试处理错误的元素。尝试使用以下代码:

from selenium.webdriver.common.keys import Keys
driver.find_element_by_id('oUserID').send_keys('userName'+Keys.TAB)
driver.find_element_by_id('oPwdID').send_keys('papsp')

【讨论】:

  • 啊,没错!!应该看起来更努力,出于某种原因,我一直在查看其他代码行。非常感谢
  • 您好,我无法进入。我可以看到登录按钮的 id 是 oLogon 我还有另一个问题,但想知道您是否可以提供帮助。我尝试了您的代码并添加了以下内容:btn = driver.find_element_by_id('oLogon') btn.submit() 也尝试了:driver.find_element_by_id('oPwdID').send_keys('papsp' + Keys.ENTER) 甚至:driver.find_element_by_id('oPwdID').send_keys('papsp'+ Keys.RETURN) 它不起作用
  • 那么简单的driver.find_element_by_id('oLogon').click()呢?你有什么例外吗?
  • 我之前试过了,没有错误,但屏幕什么也没做。链接在这里:(snag.gy/FUn28I.jpg)但是如果我输入了错误的用户名并且没有注册:那么它会给我一个错误,链接在这里:(snag.gy/wLf70H.jpg)我不确定它是否与安全有关。
  • 我无法重现该问题,因为我在那里没有帐户。您可能需要 import time 并在操作之间添加 time.sleep(1) 以使您的脚本表现得更像人类
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-02
  • 2016-12-11
相关资源
最近更新 更多