How do I make the method return the text value of an element on the page, using Selenium with JS? Now returns undefined
homepage.js
const { Builder, By, Key, until } = require('selenium-webdriver');
let Basepage = require('../pageobjects/basepage');
class Homepage extends Basepage {
isAviasales(){
driver.findElement(By.xpath("//h1[@class='header__title']")).getText().then(function(txt){
return txt+'';});
}
module.exports = new Homepage();
basepage.js
let webdriver = require('selenium-webdriver');
let driver = new webdriver.Builder().forBrowser('chrome').build();
driver.manage().setTimeouts( { implicit: 10000 } );
class Basepage{
constructor(){
global.driver = driver;
}
go_to_url(theURL){
return driver.get(theURL);
}
}
module.exports = Basepage;
testpage.js
const assert = require('chai').assert;
const homepage = require('../pageobjects/homepage');
let baseurl = 'https://www.aviasales.by/';
describe('Tests are starting', function(){
this.timeout(7000);
it('Mainpage test',function(){
homepage.go_to_url(baseurl);
// assert.equal(homepage.isAviasales(),'Поиск дешёвых авиабилетов');
})
it('Omsk test',function(){
homepage.enterText('Омск');
// assert.equal(homepage.isOMS(),'OMS');
})
it('Swap test',function(){
homepage.clickSwapPlaces();
})
})
MoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetailsMoredetails
Looks like you are missing a wait here.
I guess the element you are trying to access is still not completely loaded on the web page when you trying to access it and retrieve it's text content.
To give better answer we need to see all your code here.