gpt4 book ai didi

python - Selenium - 登录引发 ElementNotVisibleException

转载 作者:行者123 更新时间:2023-11-28 18:29:13 25 4
gpt4 key购买 nike

我正在使用 Selenium Webdriver 登录网站。我尝试了多种不同的选择器,并尝试了隐式等待,但无法找到该元素。

    from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Firefox()
url = "https://www.example.com"
login_page = browser.get(url)

username = browser.find_element_by_id("Email")
# Also tried:
# username = browser.find_element_by_xpath('//*[@id="Email"]')
# username = browser.find_element_by_css_selector('#Email')
username.send_keys("email")

这是html

<div class="form-group">
<label for="Email">Email address</label>
<div class="input-group" style="width: 100%">
<input class="form-control email" data-val="true" data-val-length="Maximum length is 50" data-val-length-max="50" data-val-regex="Provided email address is not valid" data-val-regex-pattern="^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$" data-val-required="Email is required" id="Email" name="Email" type="email" value=""><br>
<span class="field-validation-valid" data-valmsg-for="Email" data-valmsg-replace="true"></span>
</div>
</div>

这是错误信息

Traceback (most recent call last):
File "seleniumloginpi.py", line 12, in <module>
email.send_keys('email')
File "/Users/greg/anaconda/envs/trade/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 320, in send_keys
self._execute(Command.SEND_KEYS_TO_ELEMENT, {'value': keys_to_typing(value)})
File "/Users/greg/anaconda/envs/trade/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 461, in _execute
return self._parent.execute(command, params)
File "/Users/greg/anaconda/envs/trade/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute
self.error_handler.check_response(response)
File "/Users/greg/anaconda/envs/trade/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with
Stacktrace:
at fxdriver.preconditions.visible (file:///var/folders/2h/3nnr94wx0f9g9bjcl0ks_g1w0000gn/T/tmpfAR5E7/extensions/fxdriver@googlecode.com/components/command-processor.js:10092)
at DelayedCommand.prototype.checkPreconditions_ (file:///var/folders/2h/3nnr94wx0f9g9bjcl0ks_g1w0000gn/T/tmpfAR5E7/extensions/fxdriver@googlecode.com/components/command-processor.js:12644)
at DelayedCommand.prototype.executeInternal_/h (file:///var/folders/2h/3nnr94wx0f9g9bjcl0ks_g1w0000gn/T/tmpfAR5E7/extensions/fxdriver@googlecode.com/components/command-processor.js:12661)
at DelayedCommand.prototype.executeInternal_ (file:///var/folders/2h/3nnr94wx0f9g9bjcl0ks_g1w0000gn/T/tmpfAR5E7/extensions/fxdriver@googlecode.com/components/command-processor.js:12666)
at DelayedCommand.prototype.execute/< (file:///var/folders/2h/3nnr94wx0f9g9bjcl0ks_g1w0000gn/T/tmpfAR5E7/extensions/fxdriver@googlecode.com/components/command-processor.js:12608)

如有任何帮助,我们将不胜感激。

最佳答案

实际上您正在定位元素,send_keys 有问题,由于元素不可见,此处无法在电子邮件输入上设置值。但是正如我在提供的 HTML 中看到的那样,电子邮件输入元素上不存在可能使其不可见的样式属性。

可能有更多具有相同 id 的元素,并且您正在与其他元素交互,您应该尝试使用一些不同的定位器,如下所示:-

username = browser.find_element_by_css_selector('div.input-group input#Email.form-control.email')
username.send_keys("email")

或者尝试找到所有具有 Id Email 的元素并在可见元素上执行 send_keys(),如下所示:

usernames = browser.find_elements_by_id('Email')

for username in usernames:
if username.is_displayed():
username.send_keys("email")
break

关于python - Selenium - 登录引发 ElementNotVisibleException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38818840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com