Functionally, Selenium have no direct dependency whether the AUT1 is built through either Vue.js, ReactJS or JavaScript. From Selenium perspective what matters most is the different states (mentioned below) of an WebElement with whom you want to interact as follows:
present
visible
interactable (i.e. clickable)
So basiaclly you need to induce a waiter i.e. WebDriverWait for the desired element to be in your desired state as follows:
presence:
var EC = protractor.ExpectedConditions;
// Waits for the element with id 'abc' to be present on the dom.
browser.wait(EC.presenceOf($('#abc')), 5000);
visibility:
var EC = protractor.ExpectedConditions;
// Waits for the element with id 'abc' to be visible on the dom.
browser.wait(EC.visibilityOf($('#abc')), 5000);
interactibility (i.e. clickablity):
var EC = protractor.ExpectedConditions;
// Waits for the element with id 'abc' to be clickable.
browser.wait(EC.elementToBeClickable($('#abc')), 5000);
As per the HTML you have shared to wait for the desired element to be clickable you can use the following solution:
browser.wait(until.elementIsClickable(By.xpath("//img[@src='img/end_call.svg']")), 20);
1Application Under Test
Update
As per your comment update, if the element becomes interactable I don't see any obstacle in sending the character sequence
. However, if the character sequence
disappears on post Vue finish processing we can use the ExpectedConditions
as stalenessOf
Here you can find a similar discussion on JavaScript __doPostBack
in How do I wait for a JavaScript __doPostBack call through Selenium and WebDriver