【问题标题】:How can I click on a div button with selenium webdriver?如何使用 selenium webdriver 单击 div 按钮?
【发布时间】:2016-12-19 20:21:16
【问题描述】:

我有这个按钮:-

 <div class="dsk-col-1-4 card new">
    <div class="div_center_div">
      <span class="icon icon_plus-black-symbol"></span>
      <h2>Create</h2>
    </div>
  </div>

但我尝试按类名查找元素:-

driver.findElementByClassName("dsk-col-1-4 card new").click();

但它不起作用。 有什么帮助吗?

【问题讨论】:

    标签: html selenium selenium-webdriver selenium-ide


    【解决方案1】:

    好的,所以我无法准确理解您要点击哪个元素, 所以根据我的假设,试试下面的 Xpaths :

    1) 如果你要点击的是&lt;div class="dsk-col-1-4 card new"&gt;

    //div[contains(@class,'dsk-col-1-4 card new')]
    

    2) 如果是你想点击的,

    //span[contains(@class,'icon icon_plus-black-symbol')]
    

    3) 如果你要点击的是&lt;h2&gt;Create&lt;/h2&gt;

    //h2[text()='Create']
    

    希望这有帮助!

    【讨论】:

      【解决方案2】:

      移动到您的元素并单击。示例:

      new Actions(driver).MoveToElement(yourElement).Click().Perform();
      

      【讨论】:

        【解决方案3】:

        “按类名”定位器通常期望传递一个单个类名

        driver.findElementByClassName("card").click();
        

        如果您想使用多个类,请使用“按 CSS 选择器”

        driver.findElementByCssSelector(".card.new").click();
        

        注意dsk-col-1-4类对于元素定位器来说并不是一个很好的选择——这看起来很像一个面向布局的类名,它不仅有更高的概率被b改变,而且不会带来任何信息关于元素及其用途。另一方面,cardnew 更合适。

        【讨论】:

        • 我从那个元素获取 css : driver.findElementByCssSelector("html body div.main div.addon_cards.fluidwrap div.dsk-col-1-4.card.new").click() ;但它不起作用。
        【解决方案4】:

        在您的定位器中,您传递了多个类名,尽管它们都被分配给元素,但 findElementByClassName 函数仅在它是单个类名时才有效。我这样做的方式是使用 findelement(By.Xpath()),在这种情况下你需要使用

        webDriver.findElement(By.xpath("//div[contains(@class,'dsk-col-1-4 card new')]")).click();
        

        【讨论】:

          猜你喜欢
          • 2016-03-02
          • 2020-09-04
          • 2019-12-14
          • 2020-01-24
          • 1970-01-01
          • 2021-09-03
          • 1970-01-01
          • 1970-01-01
          • 2012-08-23
          相关资源
          最近更新 更多