【问题标题】:How to identify button class element?如何识别按钮类元素?
【发布时间】:2014-11-25 23:34:28
【问题描述】:

我尝试了以下方法来识别元素,但在运行脚本时收到“未找到元素”消息。

方法1试过:

self.driver.find_element_by_xpath("//button[text()='Adopt and Initial']").click()

方法2试过了:

self.driver.find_element_by_css_selector(".btn-primary.btn.left.item-alt").click()

按钮的 HTML:

更新了元素的 Html 代码。这是用于文档签名的。

    <div class="dialog is-signature-mode" tabindex="0">
  <header class="dialog-header">
    <h1 class="dialog-title">
      <span class="item-alt" data-group="tagType" data-group-item="signature">Adopt Your Signature</span>
      <span class="item-alt" data-group="tagType" data-group-item="initials" data-selected="">Adopt Your Initials</span>
    </h1>
    <nav class="icons">
      <a class="close" data-action="cancelAdoptSignature">
        <i class="icon-close"></i>
      </a>
    </nav>
  </header>
  <section class="dialog-body">
    <article id="adopt">

        <header class="ds-title p">
          Confirm your name, initials, and signature.
        </header>
        <div class="full-name">
          <div class="wrapper">
            <label for="full-name">Full Name</label> <span class="error hidden">Name required</span>
            <br>
            <div class="text-input-wrapper">
              <input id="full-name" disabled="" value="QAAuto 01Dec2014_10.41.03" name="fullname" type="text" class="required text-input" maxlength="50">
            </div>
          </div>
        </div>
        <div class="initials">
          <div class="wrapper">
            <label for="initials">Initials</label> <span class="error hidden">Initials required</span>
            <br>
            <div class="text-input-wrapper">
              <input id="initials" disabled="" value="Q0" name="initials" type="text" class="required text-input" maxlength="50">
            </div>
          </div>
        </div>


      <div class="clear-float"></div>
    </article>
    <header class="tab-nav">
      <ul>
        <li><a href="#select-style" class="tab tab-select-style selected">Select Style</a></li>
        <li><a href="#draw" class="tab tab-draw">Draw</a></li>


      </ul>
    </header>

      <article id="select-style" class="tab-panel panel-select-style selected">
        <h4 class="normal">Preview <span class="error"></span></h4>
        <div class="signature-preview">
          <div class="signature"><img alt="" src="https://demo.docusign.net/Signing/image.aspx?ti=56b2faad38e7427a99defd1dfaa258ce&amp;insession=1&amp;i=asig150&amp;force=154&amp;s=QAAuto+01Dec2014_10.41.03&amp;f=7_DocuSign&amp;nochrome=0" height="75px" class="signature-img left">
<img alt="" src="https://demo.docusign.net/Signing/image.aspx?ti=56b2faad38e7427a99defd1dfaa258ce&amp;insession=1&amp;i=ainit150&amp;force=155&amp;s=Q0&amp;n=QAAuto+01Dec2014_10.41.03&amp;f=7_DocuSign&amp;nochrome=0" height="75px" class="initials-img right">
<div class="clear-float"></div></div>
          <a class="change-style">
            Change Style
          </a>
          <div class="clear-float"></div>
        </div>
      </article>


      <article id="draw" class="tab-panel panel-draw">
        <h4 class="normal">
          <span class="item-alt-inline" data-group="tagType" data-group-item="signature">Draw your signature</span>
          <span class="item-alt-inline" data-group="tagType" data-group-item="initials" data-selected="">Draw your initials</span>
          <span class="error"></span>
        </h4>
        <a class="clear" data-ds="clear">Clear</a>
        <div class="signature-draw signature">

        <div class="canvas-wrapper"><canvas class="canvas" width="0" height="0"></canvas><canvas class="canvas" width="0" height="0"></canvas></div></div>
      </article>



    <p class="legalese">By clicking Adopt and Sign, I agree that the signature and initials will be the electronic representation of my signature and initials for all purposes when I (or my agent) use them on documents, including legally binding contracts - just the same as a pen-and-paper signature or initial.</p>
    <hr>
    <button class="btn-primary btn left item-alt" data-group="tagType" data-group-item="signature" type="button" data-ds="submit" value="initials">Adopt and Sign</button>
    <button class="btn-primary btn left item-alt" data-group="tagType" data-group-item="initials" type="button" data-ds="submit" value="initials" data-selected="">Adopt and Initial</button>
    <button class="close left btn btn-default" type="button" data-action="cancelAdoptSignature">Cancel</button>
    <div class="clear-float"></div>
  <div class="styles"></div></section>
</div>

【问题讨论】:

  • 我添加了这些由于某种原因它没有出现在我的帖子中。
  • 我不知道那张显微图像中有什么,但它不是很有用。将文本粘贴到问题中。
  • 请澄清“不工作”。
  • 更新了问题...如果还不清楚,请告诉我。感谢您的帮助。
  • 如果您看到 NoSuchElement 异常,这通常是由于元素位于 iframe 内,或者在 Selenium 认为页面已完成加载之后加载元素。

标签: python selenium element


【解决方案1】:

请尝试下面的 xpath 并告诉我会发生什么

assertTrue(driver.getPageSource().contains("Adopt and Initial"));
self.driver.find_element_by_xpath("//button[conatins(text(),'Adopt and Initial')]".click(); 

现在请确保在命令之前使用断言,因为如果断言失败,则当前帧中不存在该元素。所以我们必须在执行操作之前切换正确的帧。 如果你试试这个,请告诉我。

【讨论】:

  • getpagesource 是一个java库的样子。我正在使用 Selenium 进行 Python 绑定...我尝试了这个,但它没有找到元素 self.assertTrue(driver.get_window_size("current") self.driver.find_element_by_xpath("//button[contains(text( ),'采用并初始化')]").click();
  • 你能给我提供这个元素的 HTML 代码吗?你确定那个元素在同一个框架中吗?
  • Rupesh- 我更新了原始帖子中的 html。此元素不在 iframe 中。但是您接受 t&c 并单击复选框的初始页面位于 iframe 中。然后,它单击此元素出现的复选框之一(在 iframe 之外)。这是我们难以识别的。
猜你喜欢
  • 1970-01-01
  • 2018-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-30
  • 2017-02-27
相关资源
最近更新 更多