[英]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.