繁体   English   中英

webdriver target =“_ blank”

[英]webdriver target=“_blank”

页面具有超链接的图像,并且该超链接具有target =“_ blank”,并且每当我按下该图像加载新的firefox并且该超链接被重定向到该新的firefox web并且我失去对该网页的所有控制权。 是否可以在超链接上删除或更改目标=“_ blank”,因为我想在同一个webdriver中加载网页

WebDriver driver = new FirefoxDriver();

    driver.get("http://www.page.eu/");
    WebElement submit;
    submit = driver.findElement(By.xpath("//img[@alt='page']"));
    submit.click();

该超链接有target =“_ blank”我需要通过使用webdriver + javascript以某种方式更改该目标或者是什么? 可能吗?

编辑

感谢您的建议,但仍然是这个问题,我试图让Grooveek说,但没有变化

WebElement labels2 = driver.findElement(By.xpath("//a[@href='http://tahtpage.net']"));
    WebElement aa = (WebElement) ((JavascriptExecutor)  driver).executeScript("labels2.setAttribute('target','_self')",labels2 );
    aa.click();

我有一个错误org.openqa.selenium.WebDriverException:null(警告:服务器没有提供任何堆栈跟踪信息)

我不擅长javascrit所以我认为那个执行者是个问题

您可以直接转到链接中的网址,而不是点击图片:

WebElement link = (driver.findElement(By.xpath("//img[@alt='page']/parent::*"));
String href = link.getAttribute("href");
driver.get(href);

我认为你应该使用simeon sinichkin建议的SwitchTo()。Window。 但是,我不喜欢他的榜样。这是一个简单的例子。

 driver.Navigate().GoToUrl(baseURL);
 //Get the Main Window Handle
 var baseWindow = driver.CurrentWindowHandle;
 // navigate to another window (_blank)
 driver.FindElement(By.Id("btn_help")).Click();
 Thread.Sleep(2000);
 //switch back to Main Window
 driver.SwitchTo().Window(baseWindow);

希望有所帮助

在窗口中评估javascript将帮助您抑制target = blank链接以下是Webdriver文档中的示例

List<WebElement> labels = driver.findElements(By.tagName("label"));
List<WebElement> inputs = (List<WebElement>) ((JavascriptExecutor)driver).executeScript(
    "var labels = arguments[0], inputs = []; for (var i=0; i < labels.length; i++){" +
    "inputs.push(document.getElementById(labels[i].getAttribute('for'))); } return inputs;", labels);

调整它以修改DOM以抛出target =“_ blank links”

你为什么不想使用SwitchTo()。窗口?

请尝试以下方法:

WebElement labels2 = driver.findElement(By.xpath("//a[@href='http://tahtpage.net']"));
WebElement aa = (WebElement) ((JavascriptExecutor) driver).executeScript("arguments[0].setAttribute('target','_self')",labels2 );
aa.click();

您将获得一个null异常,因为您在javascript中使用labels2 ,而在该上下文中不存在。 通过将其更改为arguments[0] Selenium将采用labels2参数并在javascript中适当地引用它。

你为什么不用:

target="_self"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM