簡體   English   中英

如何使用 Selenium Java 單擊應在同一窗口中打開的鏈接

[英]How to click on a link which should be open in same window using Selenium Java

我只是在自學並嘗試使用 Selenium-Java 自動化 Flipkart 站點。

所以這里的場景是:我想單擊屬性設置為 Target=_blank 的產品鏈接。

我想將其設置為_self。

我已經使用 JS Executor 編寫了一個代碼,但在運行時出現錯誤:

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();

錯誤:

org.openqa.selenium.JavascriptException: javascript 錯誤:意外的令牌 ':'

代碼的問題在於這一行:

js.executeScript("document.getElementByXpath("+linkpath+").setAttribute('target', 'self')");

您正在嘗試傳遞一個對象(由您的第一行代碼標識的元素)而不是 xpath 字符串 (getElementByXpath)

您有 2 個選擇:

  1. 在開頭將 xpath 聲明為字符串,以便它可以用於需要它的兩行代碼
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();
  1. 修改 JavascriptExecutor 以使用已經找到的 Webelement 對象作為參數
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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM