Checkout our demo site to practice selenium https://magento.softwaretestingboard.com/

1 like 0 dislike
1.7k views
by The go-to Tester (158 points)
I have an element that changes the locator under certain conditions. I would like to have one element in my code, but to search for the element in two ways (two locators). I use Selenium.Support classes(C#). Is it possible?

1 Answer

1 like 0 dislike
by The go-to Tester (181 points)
selected by
 
Best answer

Yes, you can have multiple locators to the same element. But not at the same time. You will have to use if else condition with try catch block.

e.g.

Element ele = null;

try{

ele = driver.findElement(By.id("your id here"));

}catch(NoSuchElementException ignore){

ele = driver.findElement(By.className("your class name here"));

}

 

Hope that helps! Please feel free to comment if you have any questions.

by The go-to Tester (158 points)
But how to use this with Selenium.Support classes.
In my code I declare element in this way:

[FindsBy(How = How.XPath, Using = "//div[@class='button']")]
protected IWebElement Button{ get; set; }
by The go-to Tester (181 points)
Have you tried simply using FindsBy twice?

[FindsBy(How = How.Id, Using = "myIdhere")]
[FindsBy(How = How.XPath, Using = "//div[@class='button']")]
protected IWebElement Button{ get; set; }
by The go-to Tester (158 points)
It works! Thank you!


This site is for software testing professionals, where you can ask all your questions and get answers from 1300+ masters of the profession. Click here to submit yours now!

1.4k questions

1.6k answers

866 comments

1.9k users

...