【问题标题】:HtmlUnit Button without a ID,Name or Value [Xpath not working]没有 ID、名称或值的 HtmlUnit 按钮 [Xpath 不工作]
【发布时间】:2019-07-23 22:16:02
【问题描述】:

我知道论坛中有一些关于这个问题的答案。 但它们似乎都不适用于我的问题。我想点击一个按钮:

这是侧面代码(测试登录非常简单的一面):

<head/>
 <body>
   <form action="/login_check" method="post" class="login-form">

          <label for="username">E-Mail</label>
                <input type="text" id="username" 
                 class="form-control" placeholder="E-Mail" name="_username" 
                 value="" required style="margin-bottom: 10px;"/>

          <label for="password">Passwort</label>
                <input type="password" id="password" 
                 class="form-control" placeholder="Passwort" name="_password"
                 required /><br>

         <button class="btn btn-default btn-block btn-form-submit"
                type="submit" data-loading-text="<i class='fa fa-spinner fa-spin'></i>">
            Anmelden
         </button>

   </form>
 </body>

Chrome F12“复制 Xpath”

getFirstByXPath("/html/body/form/button");

任何想法如何点击按钮?谢谢

这是我的代码的简短快照:

String pageText1 = page1.asText();
System.out.println(pageText1);

HtmlButton htmlElement = page1.getFirstByXPath("//*[contains(text(),'Anmelden')]");
htmlElement.click();

HtmlButton htmlElement1 = page1.getFirstByXPath("/html/body/form/button");
htmlElement1.click();

Thread.sleep(2000);
String pageText2 = page1.asText();
System.out.println(pageText2);

page1.asText1() 与 page1.asText2 相同

E-MailTest@test.dePasswort123 Anmelden

E-MailTest@test.dePasswort123 Anmelden

【问题讨论】:

  • 你想做什么?
  • 你不能给它一个id吗?
  • 您需要首先确保page.asXml()包含该按钮,否则请发布您的完整案例
  • 对不起 .. 完全忘了告诉你们我要做什么:我只想点击按钮 @AhmedAshour page.asXml() 包含按钮
  • 现有答案会对您有所帮助,否则请发布您的完整案例,以便其他人可以重现和调查该问题。

标签: java html button xpath htmlunit


【解决方案1】:

您可以通过文本内容简单地匹配所需的button

//button[.="Anmelden"]

或通过type属性值:

//button[@type="submit"]

如果它不起作用,您可以在您的工单中添加更多详细信息,说明为什么 Xpath 不起作用,因为它并不完全清楚

【讨论】:

  • 抱歉第一篇文章。现在你有了更多的信息。感谢您的帮助
【解决方案2】:

您可以为您的案例使用以下 xpath:

driver.findElement(By.xpath("//*[contains(text(),'Anmelden')]")).click();

希望对你有帮助。

【讨论】:

  • 嘿 RNS,在我的程序中添加了“HtmlUnitDriver”并尝试了您的想法。但我收到一个错误:org.openqa.selenium.NoSuchElementException: Unable to locate a node using //*[contains(text(),'Anmelden')]
  • 或类似的东西:无法评估 xpath 表达式 '//*[contains(button[@type='submit')]'
【解决方案3】:

试试这个

//form[@action='/login_check']//button[@type='submit']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多