Xpath not found - xpath

When executing the test case, this error is shown:
Button with locator 'xpath=//*[#id="stBanner"]/div[2]/a[2]' not found.
The element doesnt't have an id, and I have to use Xpath, but it can't be found.
This is the code when I inspect the element:
<div class="stRight">
<span id="mobileSearchIcon" class="glyphicon glyphicon-search"></span>
<!-- Logged in --><!-- Logged out -->
<a class="user-sts-link" href=" uri=nm:oid:Z6_72A2IA80O0US40QOM4JF0F30O3">REGISTER</a>
<a class="user-sts-link" href="?uri=nm:oid:Z6_72A2IA80O0CSB0Q4ODDFDQ0081">LOGIN</a>
</div>
This is the xpath:
//*[#id="stBanner"]/div[2]/a[2]
This is the testcase:
SeleniumLibrary.Open Browser #{tst3Url}[0] firefox
SeleniumLibrary.Click Button xpath=//*[#id="stBanner"]/div[2]/a[2]

Don't use the Click Button keyword - it is strictly for html elements of the <button> type.
Instead, use Click Element - your target element is an <a>, and with Click Elements the browser will execute the click on it.

Related

Click on a element with specific text

Alright, I have a item which has this class class="country" and there are 12 elements with the same class. Now I want to get a element on its value. For example Italy. And now I want to click on a link in this item. The class of the link is class="link". So basically I want to click the link of the item with the name Italy
My code at the moment:
cy.get('.country').should('have.text', 'Italy').click();
HTML
<div class="countries">
<div class="text">
<h3></h3>
<div class="country">Italy</div>
<h4>Yala</h4>
<p>test</p>
<a class="link" href="/mysite">Show details</a>
</div>
</div>
Should() is an assertion and won't select the element you want.
you probably want the contains() function.
cy.get('.country').contains('Italy').click()
Best

Cypress - cy.click() does not click on the value in the select2 drop down

I have a dropdown which has select2 class. On clicking the arrow in drop down, I get below code activated in DOM which has the values Reason1 and Reason2 in the dropdown. I want to iterate on the available values and select the desired option.
Using each function, I am able to itearte on the array and get the available values, but I am unable to perform cy.click() on the same to get the value selected. I am not getting any error and code is running fine but the click in not happening (neither on div , li nor span tag)
`<ul class="select2-results">
<li class="select2-results-dept-0 select2-result select2-result-selectable">
<div class="select2-result-label">
<span class="select2-match"></span>
Reason1
</div>
</li>
<li class="select2-results-dept-0 select2-result select2-result-selectable">
<div class="select2-result-label">
<span class="select2-match"></span>
Reason2
</div>
</li>
</ul>`
Given below is my code
cy.get('#select2-drop > .select2-results').find('li').each(($el,index,$list) => {
let option = $el.find('div').text()
if(option=='Reason2')
{
$el.find('div').click()
}
})
If I add $el.find('div').css('background-color','yellow') in the if condition, elements background color is getting changed to yellow but click is not happening.
Can anyone please help on this.
Thanks!
you can use these command if you want to select the second one
cy.get('#select2-drop > .select2-results')
.type("{downarrow}")
.type("{downarrow}")
.type("{enter}")

How to use XPath extract text without Html tag?

<div id="info" class="">
<span>
<span class="pl"> author</span>:
<a class="" href="/search/author"Peter</a>
</span><br/>
<span class="pl">publisher:</span> god cor<br/>
<span class="pl">year:</span> 2011-6<br/>
<span class="pl">page:</span> 360<br/>
<span class="pl">price:</span> 39.50<br/>
From the above HTML tags, i want to extract those numbers with XPath.How can i do that?
Thanks.
The XPath for each number is (in order as shown above) :
//*[#id="info"]/a/text()[2] --> 2011-6
//*[#id="info"]/a/text()[3] -->360
//*[#id="info"]/a/text()[4] --> 39.5
You can know the XPath for any tag by just opening the html file in Chrome, right clicking on the view and choosing "inspect". When you find the tag you want, just right click on it and choose Copy-> Copy XPath.

Unable to click dropdown from combo box

Using : Cucumber Watir / Web Driver
I am trying to click the drop-down element or any element that will open the list.
My error is:
undefined method `click' for # (NoMethodError)
My Watir code is:
#browser.divs(:class => 'dd-field').click #I have tried other Class names from the html. Can’t get it to click
My HTML ( That is highlighted per firebug ):
<div class="header">Deposit•to</div>
<div class="dropdown" ng-class="secondaryClass()">
<div class="dd-field" on="!selectedAccount" ng-switch="">
-- ngSwitchWhen: false -->
<!-- ngSwitchDefault: -->
<div class="dd-label ng-scope" ng-switch-default="">Select•an•account</div>
<div class="dd-arrow-box">
<div class="dd-arrow"></div>
</div>
I tried Fire on event click without success.
You get that error because you are using #browser.divs instead of #browser.div, notice one is plural divs, which returns a list of <div> elements, so no wonder you can't click a list of elements.
Try use #browser.div instead, which returns one single element and you should be able to click.
#browser.div(:class => 'dd-field').click

How to click on anchor <a> tag from Canoo webtest?

Our team replaced a submit button with the following anchor tag:
<a class="l-btn" onclick="onFormSubmit(this.form)" Style="width: 80px; text-align:center;">
<span class="l-btn-left">
<span class="l-btn-text">Save</span>
</span>
</a>
I retrieved xpath from XPather, and tried to use from canoo webtest to click on it, but received "failed: Link not found".
Does anyone know how to simulate click on the above?
Thanks.
<clickLink xpath="//a[#class='l-btn']" description="Click first a tag with class l-btn" />
See clickLink documentation
clickLink xpath="//a[contains(#onclick,'onFormSubmit')]
description="click link with onclick property that contain the word
onFormSubmit"
will look for the link with xpath property onclick that contain a value 'onFormSubmit'

Resources