XPath is a language used to locate elements on a web page by navigating through the HTML structure.
Click to reveal answer
beginner
How do you select an element with a specific attribute using XPath?
Use the syntax //tagname[@attribute='value'] to select elements with a specific attribute value.
Click to reveal answer
beginner
Example: Write XPath to find an input element with id 'username'.
//input[@id='username'] selects the input element whose id attribute equals 'username'.
Click to reveal answer
beginner
What does the XPath //button[@type='submit'] select?
It selects all <button> elements where the attribute type has the value submit.
Click to reveal answer
beginner
Why is using attributes in XPath locators helpful in Selenium tests?
Attributes help precisely identify elements, making tests more reliable and less likely to break if the page layout changes.
Click to reveal answer
Which XPath expression selects a div element with class 'header'?
A//div[@class='header']
B//div[class='header']
C//div[@id='header']
D//header[@class='div']
✗ Incorrect
The correct syntax uses @ to specify the attribute: //div[@class='header'].
What does the XPath //input[@name='email'] select?
AAll input elements with id 'email'
BAll elements with tag 'email'
CAll input elements with name attribute equal to 'email'
DAll elements with attribute 'input' equal to 'email'
✗ Incorrect
It selects input elements whose name attribute equals 'email'.
How do you select elements with multiple attributes in XPath?
A//tag[@attr1='value1' and @attr2='value2']
B//tag[attr1='value1' or attr2='value2']
C//tag[@attr1='value1', @attr2='value2']
D//tag[@attr1='value1' & @attr2='value2']
✗ Incorrect
Use 'and' to combine multiple attribute conditions: //tag[@attr1='value1' and @attr2='value2'].
Which is the correct XPath to find a button with attribute disabled?
A//button[disabled='true']
B//button[@disabled]
C//button[@disabled='disabled']
D//button[disabled]
✗ Incorrect
To select elements with an attribute regardless of value, use //button[@disabled].
What is the purpose of using XPath with attributes in Selenium?
ATo execute JavaScript code
BTo change the attributes of elements
CTo style elements on the page
DTo locate elements precisely by their attributes
✗ Incorrect
XPath with attributes helps find elements precisely based on their attribute values.
Explain how to write an XPath expression to select an element by its attribute.
Think of the pattern: //tag[@attribute='value']
You got /5 concepts.
Describe why using attributes in XPath locators improves Selenium test reliability.
Consider how attributes help pinpoint elements even if the page structure changes.
You got /4 concepts.
Practice
(1/5)
1. What does the XPath expression //input[@type='submit'] select in a web page?
easy
A. All <input> elements with attribute type equal to 'submit'
B. All elements with tag name 'submit'
C. All elements with attribute 'input' equal to 'submit'
D. All <submit> elements inside <input> tags
Solution
Step 1: Understand XPath tag and attribute syntax
The expression uses //input to select all <input> tags anywhere in the document.
Step 2: Analyze the attribute filter
The filter [@type='submit'] selects only those <input> elements whose 'type' attribute exactly equals 'submit'.
Final Answer:
All <input> elements with attribute type equal to 'submit' -> Option A
Quick Check:
XPath //tag[@attr='value'] selects elements with that attribute value [OK]
Hint: Look for tag name then attribute filter in square brackets [OK]
Common Mistakes:
Confusing tag name with attribute name
Using wrong attribute syntax like @type=submit without quotes
Thinking it selects elements named 'submit'
2. Which of the following is the correct XPath syntax to select a button element with id 'loginBtn'?
easy
A. //button[id='loginBtn']
B. //button[#id='loginBtn']
C. //button[id()='loginBtn']
D. //button[@id='loginBtn']
Solution
Step 1: Recall correct attribute syntax in XPath
Attributes are selected using @attributeName='value' inside square brackets.
Step 2: Check each option
//button[@id='loginBtn'] uses @id='loginBtn' correctly. Options A, B, and D use invalid syntax for attributes.
Final Answer:
//button[@id='loginBtn'] -> Option D
Quick Check:
Attributes need '@' before name in XPath [OK]
Hint: Always prefix attribute names with '@' in XPath [OK]
Common Mistakes:
Omitting '@' before attribute name
Using parentheses or '#' incorrectly
Confusing XPath with CSS selector syntax
3. Given the HTML snippet:
<input type='checkbox' name='subscribe' checked>
What will the XPath //input[@checked] select?
medium
A. All <input> elements with attribute 'checked' present
B. All <input> elements with attribute 'checked' equal to 'true'
C. All <input> elements with attribute 'checked' equal to 'checked'
D. No elements, because 'checked' has no value
Solution
Step 1: Understand attribute presence in XPath
The XPath //input[@checked] selects all <input> elements that have the 'checked' attribute, regardless of its value.
Step 2: Analyze the HTML snippet
The <input> element has the 'checked' attribute present (without a value), so it matches the XPath.
Final Answer:
All <input> elements with attribute 'checked' present -> Option A
Quick Check:
XPath [@attr] checks attribute presence, not value [OK]
Hint: [@attr] means attribute exists, value not needed [OK]
Common Mistakes:
Assuming attribute must have a value
Confusing attribute presence with value equality
Thinking empty attributes are ignored
4. You wrote the XPath //div[@class='container'] but it does not find the element. The element's class attribute is "container main". What is the issue?
medium
A. XPath cannot select elements by class attribute
B. XPath looks for exact match; 'container main' ≠ 'container'
C. The attribute name should be 'className' not 'class'
D. XPath requires double quotes inside single quotes
Solution
Step 1: Understand attribute matching in XPath
Using @class='container' matches only if the class attribute is exactly 'container'.
Step 2: Analyze the actual class attribute
The element's class is 'container main', which is not an exact match, so XPath does not select it.
Final Answer:
XPath looks for exact match; 'container main' ≠ 'container' -> Option B
Quick Check:
Attribute equality in XPath is exact, no partial match [OK]
Hint: Exact match fails if attribute has multiple values separated by spaces [OK]
Common Mistakes:
Assuming XPath matches partial attribute values
Using wrong attribute name like 'className'
Thinking quotes style causes failure
5. You want to select all <input> elements that have a type attribute equal to 'text' or 'password' using XPath. Which expression is correct?
hard
A. //input[@type='text','password']
B. //input[@type='text' and @type='password']
C. //input[@type='text' or @type='password']
D. //input[@type=('text','password')]
Solution
Step 1: Understand logical operators in XPath
To select elements matching either condition, use or between attribute tests.
Step 2: Analyze each option
//input[@type='text' or @type='password'] correctly uses or to select inputs with type 'text' or 'password'. //input[@type='text' and @type='password'] uses and which is impossible for one attribute to have two values simultaneously. Options C and D use invalid syntax.
Final Answer:
//input[@type='text' or @type='password'] -> Option C
Quick Check:
Use 'or' to combine attribute conditions in XPath [OK]
Hint: Use 'or' to select elements matching either attribute value [OK]
Common Mistakes:
Using 'and' instead of 'or' for multiple attribute values
Trying to list values inside one attribute test
Incorrect syntax with parentheses or commas
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.