I am using Selenium RC API .NET 2.44. I know that i can click on the link with the following localtors:
XPath: //a[contains(#class, 'handpoint')] or //a[(#class, 'handpoint')]
CSS: css=a.handpoint
But why I have the opportunity to click on the link with
selenium.click("class=handpoint");
Is this a shorthand of XPath?
I didn't work with this API, but I used a similar API.
You can get a specified element in 3 different ways:
Using XPath
Using CSS
Using some HTML attributes ( E.g.: id, name, class ) or tag names
In JavaScript you have some similar methods ( E.g.: getElementById, getElementsByTagName ).
So, you are in the 3rd case. This is a different situation, not a short form of XPath.
Related
I am using SeleniumChrome Driver. I used Xpath, id, and name attributes to inspect "Select" HTML tag. but for some reason it not able to find this tag. Attached is the image .
I tried with xpath:
WebElement aSelectWebEleAccountNumber = achromeDriver.findElement(By.xpath("//*[#id='accountNumberGroupSelect']"));
Tried with CSSSelector:
WebElement ass = achromeDriver.findElement(By.cssSelector("#accountNumberGroupSelect"));
Tried with the name attribute. It canf't find the "select" tag.
WebElement ass = achromeDriver.findElement(By.name("sections(ACCOUNT_INFO).accountNumberGroup.selectedLookupKey"));
Here is the HTML source,
Select Element tag
Any suggestions?
You can implement combobox by using Select class directly.
But at first check that the element which you are trying to locate is enabled or not
Try achromeDriver.findElement(By.id(...)) ?
In C#, there is a SelectElement class to wrap the select element operations, there might be implementation in your language as well.
Below is the HTML code of an element and I want to locate this element by classs and style property using selenium webDriver in java
<div class="qooxdoo-table-cell" style="left:252px;width:117px;height:24px;"/>
suggest a way which can be help full in selenium
I want to locate the element using java code
i.e. Driver.findelement(by. ....
As long as the element isn't unique you must grab both attributes:
This is the general form, replacing the empty strings for your required class and style:
driver.findElement("By.xpath(//div[#class='' and style='']");
So:
driver.findElement(By.xpath("//div[#class='qooxdoo-table-cell' and style='left:252px;width:117px;height:24px;']");
Best of luck!
If you need to match <div> with exact style attribute, you can try something like
driver.findElement(By.xpath("//div[#class='qooxdoo-table-cell'][#style='left:252px;width:117px;height:24px;']"))
Another way is to use cssSelector as follows:
driver.findElement(By.cssSelector("div[style='left:252px;width:117px;height:24px;']"));
If you are using a older version of selenium you can as well use the older version of cssSelector.
driver.find_elements_by_css_selector("div[style='left:252px;width:117px;height:24px;']")
Note: this function still works in current version of Selenium (with DeprecationWarning )
I am not able to find the element using "id" in selenium as the id is randomly changing in every session of execution so the same id i am not getting in next execution.
As there is no other unique property is there to identify the element.
code sample
You didn't specify a language so I'm going to give you Java. You can do this by using the CSS class or probably a better choice (because of likely uniqueness) is data-lynx-name.
By CSS class
driver.findElement(By.cssSelector("div.http-lynx-json-org-text-input"));
By attribute
driver.findElement(By.cssSelector("div[data-lynx-name='username']"));
You really should read the question that I duped this one to:
Find element by attribute
Also read more about CSS selectors,
http://www.w3.org/TR/selectors/#selectors
You can use XPath.
String xpath = //div[#data-lynx-name='usernameLabel'][text='User ID']/following-sibling::div[1]
The above XPath will will find the div tag containing text 'User ID' and finds the next div which is is the required textbox.
It seems that you can even use the attribute 'data-lynx-name' attribute of the textbox div tag directly.
String xpath = //div[#data-lynx-name='username']
Selenium
driver.findElement(By.xpath(xpath));
I want to find out an object with same name with different value? Here i am interested to identify based on the name only. Do we have index like property provided in QTP. In QTP, if two buttons with same can be distinguished by index, first button with index 0 and second button with 1.
Is there way to do the same in WebDriver?
I want to identify object with name meaning "By.name". How can i do that?
Thanks,
Uday
There are multiple options to achieve it (examples in java):
using findElements and get the appropriate element from the list of resulting web elements:
List<WebElement> elements = driver.findElements(By.name("test"));
WebElement element = elements.get(0);
use xpath based approach (indexing starts from 1 here):
WebElement element = driver.findElement(By.xpath('//input[#name="test"][1]'));
You can also use jQuery style syntax in your search..
For example in Chrome tools $('css selector')[0] will get you the first occurrence of some element.
Selenium comes with a JavaScript driver so you could instantiate that and use that against your site to leverage jQuery.
I am using selenium for automating test cases for web application in that I have to get tool tip text
I tried
String result =element.getAttribute("span");
but this is retuning null. how can I get the text ?
element.getAttribute("span");
span must not be an attribute of the given element. I guess you've misunderstood, the getAttribute() method.
For e.g.
Example
For the above anchor tag, in order to get the title attributes' value, you can use :
element.getAttribute("title");
where element refers to the above anchor element.