click command in selenium webdriver does not work

Viewed 156979

I have just recently done an export of my selenium IDE code to selenium web driver. I have found that a lot of the commands that worked in IDE either fail to work or selenium web driver claims to not support at all. So far I've been tackling these issues one at a time which is less than ideal...

Currently I'm working on finding out why clicking on a button does not work with web driver while it had previously worked in selenium IDE. My browser is FF 13 and my OS is Ubuntu.

Code Snippet

WebElement loginButton = driver.findElement(By.name("submit"));
loginButton.click();

I had previously tried

driver.findElement(By.name("submit")).click();

however the above line failed as well. The element is getting selected, however it does not log us in as I would like. I found other pages with similar problems, but their problem seemed to be with Internet Explorer not Firefox. I don't even want to think about the problems IE will give me down the road.

thanks,

P.S. A tip on a better way to migrate from selenium IDE to Selenium Webdriver without losing all the tests I've written could solve this issue as well.

10 Answers

WebElement.click() click is found to be not working if the page is zoomed in or out.

I had my page zoomed out to 85%.

If you reset the page zooming in browser using (ctrl + + and ctrl + - ) to 100%, clicks will start working.

Issue was found with chrome version 86.0.4240.111

This is a long standing issue with chromedriver(still present in 2020).

In Chrome I changed from a zoom of 90% to 100% and that solved the problem. ref

I find TheLifeOfSteve's answer more reliable.

I was working with EasyRepro, and when I debugged my code it was clicking on the element which is visible and enabled, and not navigating as expected. But finally I understood the root cause for the issue.

My Chrome was zoomed out 90%

Once i reset the zoom level, it clicked on the correct element and successfully navigated to next page.

I use a function like below to make it work, or at least try a few times. Basically check the current_url until you get a new page.

def make_button_work(driver, path, max_try = 3):

strUrl_1 = driver.current_url
strUrl_2 = driver.current_url
try_num = 0
while strUrl_1 == strUrl_2:
    try_num +=1
    button = driver.find_element_by_xpath(path)
    time.sleep(1)
    button.click()
    time.sleep(1)
    strUrl_2 = driver.current_url
    if max_try == try_num:
        print('Reached max_try')
        break
Related