Lion Khan
Lion Khan

Reputation: 41

click() function on selenium not working in C#

I am really fed up from this problem and not finding any solution.

The problem is that I am trying to test a website using test automation in C#. For this I need to sign in, but the sign-in button is not actually a button, it's a span tag with property set 'role=button'.

I am using Selenium with Chrome web driver and using unit extensions to automate the test. The problem is whenever I run the test in Test Explorer the click event is performed, but the page does not navigate to next page, and nothing happens. However, when I set a break point and run the same test through main function it works fine.

I have to set the break point to perform click operation and perform login operation.

I am using a Visual Studio console application. Here is the pic of my web site html tag.

Upvotes: 3

Views: 11049

Answers (5)

Shashank Shekhar
Shashank Shekhar

Reputation: 4178

If you have Selenium.Support included in your project you can do the following

Driver.ExecuteJavaScript("arguments[0].click();", element);

ExecuteJavaScript is an extension method available in the library

Upvotes: 0

Ashok
Ashok

Reputation: 1906

I fixed this issue by storing element in an IWebElement type variable and then click it.

IWebElement runButton = driverIE.FindElement(By.XPath("//*your XPath"));
runButton.Click();

Upvotes: -2

Shubham Jain
Shubham Jain

Reputation: 17553

Try to click by JavascriptExecutor.

JavascriptExecutor is an interface provided by Selenium Webdriver

WebElement element= driver.findElement(By."Your Locator"))
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", element);

It's an java code you can modify it using reference of below link:-

Execute JavaScript using Selenium WebDriver in C#

Hope it will help you :)

Upvotes: 1

Guy
Guy

Reputation: 50819

From what I understood the click is performed before the page is fully loaded. Try using explicit wait and expected conditins

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(ExpectedConditions.ElementToBeClickable(logInButton)).Click();

This will wait up to 10 seconds for the button to be clickable before clicking on it.

Upvotes: 0

Kiksen
Kiksen

Reputation: 1767

The problem is most likely the Click function is not loaded at the time you run the test "quick", but it is when you debug. Try load the page. Wait for 1 second. Then getElement and click it. This is normal in pages that add javascript function to elements dynamically.

Upvotes: 0

Related Questions