kirk douglas
kirk douglas

Reputation: 587

How to find button element with webdriver?

I have the following code for a button :

<div class="buttons">
<button class="btn dialog-confirm btn-primary" style="margin-left: 4px;">Confirm</button>
<button class="btn dialog-cancel" style="margin-left: 4px;">Cancel</button>
</div>

There are two buttons on is Confirm and another is Cancel I can find the button with XPath but I don't want to use XPath. Is there another way to find the button element in this case?

I tried this:

driver.findElement(By.className("btn dialog-confirm btn-primary")).click();

It did not find the button Thank you for your help

Upvotes: 8

Views: 88887

Answers (5)

Jaxx0rr
Jaxx0rr

Reputation: 597

this worked for me:

driver.find_element_by_class_name('buyable-full-width').click();

Upvotes: 0

optimistic_creeper
optimistic_creeper

Reputation: 2799

Other ways using cssSelector:

  1. Use full attribute i.e.:

    driver.findElement(By.cssSelector("button[class='btn dialog-confirm btn-primary']"))

  2. Use part of attribute i.e.:

     driver.findElement(By.cssSelector("button[class*='dialog-confirm']"))
    

Upvotes: 6

Harish Ekambaram
Harish Ekambaram

Reputation: 338

Added to alecxe and master slave's answer. It would be more specific if it is clicked by the button text, which is also easier to understand. Find the snippet for button click with xpath below.

driver.findElement(By.xpath("//button[text()='Confirm']")).click();
driver.findElement(By.xpath("//button[text()='Cancel']")).click();

Upvotes: 9

Master Slave
Master Slave

Reputation: 28519

vote up for alecxe, your attempt was wrong on two accounts, when matching on multiple classes you should use By.cssSelector, and when they are set on the same element, you concatenate them with a dot, like

driver.findElement(By.cssSelector(".btn.dialog-confirm.btn-primary")).click();

Upvotes: 2

alecxe
alecxe

Reputation: 473833

Just check for a single dialog-confirm class:

driver.findElement(By.className("dialog-confirm")).click();

Or, use a CSS Selector:

driver.findElement(By.cssSelector("button.dialog-confirm")).click()

Upvotes: 14

Related Questions