Solo estoy estudiando por mi cuenta y tratando de automatizar el sitio Flipkart usando Selenium-Java.
Así que este es el escenario: quiero hacer clic en un enlace de producto cuyo atributo se establece como Target=_blank.
Quiero configurarlo como _self.
Escribí un código usando JS Executor pero obtuve un error en Runtime:
WebElement linkpath = driver.findElement(By.xpath("//div[text()='vivo Y12G (Glacier Blue, 64 GB)']")); JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("document.getElementByXpath("+linkpath+").setAttribute('target', 'self')"); linkpath.click();Error:
org.openqa.selenium.JavascriptException: error de javascript: Token inesperado ':'
El problema con el código es con esta línea:
js.executeScript("document.getElementByXpath("+linkpath+").setAttribute('target', 'self')");Está intentando pasar un objeto (el elemento identificado por su primera línea de código) en lugar de una cadena xpath (getElementByXpath)
Tienes 2 opciones:
String xpath = "//div[text()='vivo Y12G (Glacier Blue, 64 GB)']" WebElement linkpath = driver.findElement(By.xpath(xpath)); JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("document.getElementByXpath(xpath).setAttribute('target', 'self')"); linkpath.click(); WebElement linkpath = driver.findElement(By.xpath("//div[text()='vivo Y12G (Glacier Blue, 64 GB)']")); JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("arguments[0].setAttribute('target', 'self')",linkpath); linkpath.click();