【问题标题】:How to click on a link which should be open in same window using Selenium Java如何使用 Selenium Java 单击应在同一窗口中打开的链接
【发布时间】:2021-12-25 21:18:39
【问题描述】:

我只是在自学并尝试使用 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 错误: Unexpected token ':'

【问题讨论】:

  • Unexpected token ':' 似乎你写错了语法。无法确定,因为您没有在问题中添加任何相关的代码。

标签: javascript java selenium testing automation


【解决方案1】:

代码的问题在于这一行:

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

您正在尝试传递一个对象(由您的第一行代码标识的元素)而不是 xpath 字符串 (getElementByXpath)

你有两个选择:

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

【讨论】:

    猜你喜欢
    • 2015-10-14
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    相关资源
    最近更新 更多