当前位置: 首页 > 知识库问答 >
问题:

无法使用Selenium和Python定位输入框元素

微生慈
2023-03-14

因此,我一直在尝试使用selenium在python上定位用户名输入框。我尝试了xpath、id、类名等。

我还知道显式等待元素加载。然而,尽管如此,没有运气。我检查了元素是否在我忽略的iframe中,但找不到它。

这是用户输入框元素。

<div class="panel-body">
                    <h1 class="text-normal" role="banner">Sign in to your account</h1>


                    <form action="/idp/profile/SAML2/Redirect/SSO?execution=e1s1" method="post">
                        <legend>
Login to Qualtrics - co1
                        </legend>
                                        
                        <div class="form-group">
                          <label for="username" class="hidden">Username</label>
                          <div class="input-group">
                            <input id="username" name="j_username" type="text" class="form-control" tabindex="0" placeholder="Username" autocorrect="off" autocapitalize="none" spellcheck="false" aria-label="Username">
                            <div class="input-group-addon">@manhattan.edu</div>
                          </div>
                        </div>
                        <div class="form-group">
                          <label for="password" class="hidden">Password</label>
                          <input id="password" value="" name="j_password" type="password" class="form-control" placeholder="Password" aria-label="Password" autocomplete="off">
                        </div>                         


                                                  <div class="form-element-wrapper">
                            <input type="checkbox" name="donotcache" value="1" id="donotcache">
                            <label for="donotcache">Don't Remember Login</label>
                          </div>

                      <div class="form-element-wrapper">
                        <input id="_shib_idp_revokeConsent" type="checkbox" name="_shib_idp_revokeConsent" value="true">
                        <label for="_shib_idp_revokeConsent">Clear prior granting of permission for release of your information to this service.</label>
                      </div>

                        <div class="form-element-wrapper">
                          <button class="btn btn-default" type="submit" name="_eventId_proceed" onclick="this.childNodes[0].nodeValue='Logging in, please wait...'">Login</button>
                        </div>

                      <div class="clearfix"></div>
                    </form>
                    
                      <img src="https://s.qualtrics.com/login/static/xm_logo-16.png" alt="Qualtrics - co1">
                    <hr>
                    <ul class="create-account">
                        <li><a href="https://start.manhattan.edu/"> Forgot your password?</a></li>
                      <li>New student? <a href="https://start.manhattan.edu/">Get your JasperNet ID and password.</a></li>
                      <li><a href="https://inside.manhattan.edu/offices/its/client-services-hours-and-support.php"> Need Help?</a></li>
                    </ul>
                    </div>

下面是我为定位元素而编写的代码。

WebDriverWait(browser,10).until(EC.presence_of_element_located((By.XPATH, '/html/body/div/div/div/div/div[3]/div[1]/div[1]/div/ul/li[1]/a')))
browser.find_element_by_xpath('/html/body/div/div/div/div/div[3]/div[1]/div[1]/div/ul/li[1]/a').send_keys("test")

共有3个答案

冷浩瀚
2023-03-14

我认为,在您的情况下,id或xpaht很适合定位用户名输入框。

browser.find_element_by_xpath("//input[@id='username']").send_keys("test")

因此,如果仍然失败,请提供更多信息,例如运行错误日志

李言
2023-03-14

您的xpath可以是:

“//输入[id='username']”

elem=WebDriverWait(browser,10).until(EC.presence_of_element_located((By.XPATH, "//input[@id='username']")))
elem.send_keys("test")

您可以使用try和Catches来测试它是否存在。

翟誉
2023-03-14

您使用的是绝对xpath,这是不可取的。可以使用链接文本或部分链接文本。您可以参考本教程。您还可以尝试将xpath与此定位器“/*[contains(text(),“忘记密码”)”一起使用。“

 类似资料:
  • 我的应用程序中有一个,当我单击它时,它就会被启用。我可以使用CSS点击,但我不能输入文本时,它得到突出显示。

  • 问题内容: 我正在尝试搜寻房地产网站上的商品。它有一个aspx表单,必须在提交之前填写。 http://www.cbre.us/PropertyListings/Pages/Properties-for- Sale.aspx 我只关心俄勒冈州的多户家庭财产。所以这是我的第一次尝试: 当我运行此脚本时,出现错误“找不到元素“ ForSalePropertyType”。在这里我在做什么错? 问题答案:

  • 我有一个粘性导航栏,它有几个列表元素,每个元素都包含href元素。当我试图定位元素时,我得到了错误。以下是我的HTML代码: 我想通过Webdriver定位Academic,我遇到这样的错误无法定位元素。

  • 我想在selenium中找到我的文本字段,但我不知道如何找到(我第一次使用sellenium)。 我试过: 或者通过xPath和cssSseltor String在dev工具中由chrome生成。 请帮助我,我将感谢解释。 这是html:

  • 我对selenium WebDriver非常陌生,我试图自动化一个页面,它有一个名为“删除日志文件”的按钮。使用FireBug我了解到,HTML被描述为 css选择器也使用firepath定义为“#DeletelogButton” 请帮助我解决这个问题。

  • 下面是selenium找不到元素的代码。 但不知何故,它失败了,对我不起作用。它总是给我以下例外情况:过时的元素引用:元素未附加到页面文档 添加了--GetElementStextList的代码 感谢任何帮助。谢谢