Java 使用selenium单击文本链接
我可以使用selenium单击链接,但它会为我打开一个新选项卡,而不是在同一选项卡中打开,并且它只显示数据;在地址栏中,而不是页面中的内容 公共类InternetExplorerDriverTest{Java 使用selenium单击文本链接,java,eclipse,selenium,selenium-chromedriver,Java,Eclipse,Selenium,Selenium Chromedriver,我可以使用selenium单击链接,但它会为我打开一个新选项卡,而不是在同一选项卡中打开,并且它只显示数据;在地址栏中,而不是页面中的内容 公共类InternetExplorerDriverTest{ public static void clickLinkByHref(String href) { WebDriver driver = new ChromeDriver(); List<WebElement> anchors = driver.findElement
public static void clickLinkByHref(String href) {
WebDriver driver = new ChromeDriver();
List<WebElement> anchors = driver.findElements(By.tagName("a"));
Iterator<WebElement> i = anchors.iterator();
while(i.hasNext()) {
WebElement anchor = i.next();
if(anchor.getAttribute("href").contains(href)) {
anchor.click();
break;
}
}
}
public static void main(String[] args) {
WebDriver driver = new ChromeDriver();
driver.get("https://url");
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
WebElement element =
driver.findElement(By.id("323bb07bc611227a018aea9eb8f3b35e"));
element.click();
clickLinkByHref("ea7d96126f92a100f3ae60526e3ee4e0");
publicstaticvoid-clickLinkByHref(stringhref){
WebDriver驱动程序=新的ChromeDriver();
列表锚=driver.findElements(按.tagName(“a”));
迭代器i=anchors.Iterator();
while(i.hasNext()){
WebElement anchor=i.next();
if(anchor.getAttribute(“href”).contains(href)){
anchor.click();
打破
}
}
}
公共静态void main(字符串[]args){
WebDriver驱动程序=新的ChromeDriver();
驱动程序。获取(“https://url");
driver.manage().timeouts().implicitlyWait(5,TimeUnit.SECONDS);
WebElement元素=
驱动程序文件(由id(“323bb07bc611227a018aea9eb8f3b35e”);
元素。单击();
单击LinkByHREF(“ea7d96126f92a100f3ae60526e3ee4e0”);
}
}
eclipse中的控制台显示如下“2分钟后”
Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: crashed
(Driver info: chromedriver=2.25.426923 (0390b88869384d6eb0d5d09729679f934aab9eed),platform=Windows NT 6.1.7601 SP1 x86) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 61.87 seconds
Build info: version: '2.39.0', revision: 'ff23eac', time: '2013-12-16 16:12:12'
System info: host: 'NLLR4000290859', ip: '10.29.137.219', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.6.0_31'
Driver info: org.openqa.selenium.chrome.ChromeDriver
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:216)
at org.openqa.selenium.chrome.ChromeDriver.startSession(ChromeDriver.java:182)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:111)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:115)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:161)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:150)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:107)
at InternetExplorerDriverTest.clickLinkByHref(InternetExplorerDriverTest.java:41)
at InternetExplorerDriverTest.main(InternetExplorerDriverTest.java:94)
线程“main”org.openqa.selenium.WebDriverException中的异常:未知错误:Chrome启动失败:崩溃
(驱动程序信息:chromedriver=2.25.426923(0390b88869384d6eb0d5d09729679f934aab9eed),平台=Windows NT 6.1.7601 SP1 x86)(警告:服务器未提供任何堆栈跟踪信息)
命令持续时间或超时:61.87秒
构建信息:版本:“2.39.0”,修订版:“ff23eac”,时间:“2013-12-16 16:12:12”
系统信息:主机:'NLLR4000290859',ip:'10.29.137.219',os.name:'Windows 7',os.arch:'x86',os.version:'6.1',java.version:'1.6.0_31'
驱动程序信息:org.openqa.selenium.chrome.ChromeDriver
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(未知源)
位于org.openqa.selenium.remote.ErrorHandler.CreateTrowable(ErrorHandler.java:193)
位于org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
位于org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554)
位于org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:216)
位于org.openqa.selenium.chrome.ChromeDriver.startSession(ChromeDriver.java:182)
位于org.openqa.selenium.remote.RemoteWebDriver。(RemoteWebDriver.java:111)
位于org.openqa.selenium.remote.RemoteWebDriver。(RemoteWebDriver.java:115)
位于org.openqa.selenium.chrome.ChromeDriver(ChromeDriver.java:161)
位于org.openqa.selenium.chrome.ChromeDriver(ChromeDriver.java:150)
位于org.openqa.selenium.chrome.ChromeDriver(ChromeDriver.java:107)
在InternetExplorerDriverTest.clickLinkByHref(InternetExplorerDriverTest.java:41)上
位于InternetExplorerDriverTest.main(InternetExplorerDriverTest.java:94)
试着回顾一下这个例子:
另外,您的链接目标是否可能为空
下面是一个简单的例子:
包org.mitre.tests
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class Wtest {
public static void main(String[] args) {
try {
System.setProperty("webdriver.chrome.driver", "exe\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://www.w3schools.com/");
Thread.sleep(500);
WebElement text_link = driver.findElement(By.linkText("Learn HTML"));
text_link.click();
Thread.sleep(5000);
driver.quit();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("done.");
} //end main()
}
试着回顾一下这个例子: 另外,您的链接目标是否可能为空 下面是一个简单的例子: 包org.mitre.tests
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class Wtest {
public static void main(String[] args) {
try {
System.setProperty("webdriver.chrome.driver", "exe\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://www.w3schools.com/");
Thread.sleep(500);
WebElement text_link = driver.findElement(By.linkText("Learn HTML"));
text_link.click();
Thread.sleep(5000);
driver.quit();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("done.");
} //end main()
}
我重新表述我的问题:上一个问题是因为我再次初始化chromedriver。 因此,这次我将驱动程序对象传递给方法 现在我注意到我试图点击的链接根本没有被识别。 chrome中的开发者工具向我展示了如下结构中的链接:
<main
<div
<ifreame
#document
<html
<body
<form
<div
::before
<a href=wizard_view.do?sys_action=sysverb_wizard_ans&WIZARD:action=follow&wiz_referring_url=&wiz_collection_key=&wiz_collectionID=&wiz_collection=&wiz_collection_related_field=&wiz_view=&wiz_action=sysverb_new&sys_id=ea7d96126f92a100f3ae60526e3ee4e0&sysparm_query=active=true&sysparm_target=&sys_target=change_ddfdff>Standard (from Template)
</a>
::after
</div>
....
还有10个具有相同类名的div部分,每个部分都是文本链接。我想点击其中一个(见上文)我正在重新表述我的问题:上一个问题是因为我再次初始化chromedriver。 因此,这次我将驱动程序对象传递给方法 现在我注意到我试图点击的链接根本没有被识别。 chrome中的开发者工具向我展示了如下结构中的链接:
<main
<div
<ifreame
#document
<html
<body
<form
<div
::before
<a href=wizard_view.do?sys_action=sysverb_wizard_ans&WIZARD:action=follow&wiz_referring_url=&wiz_collection_key=&wiz_collectionID=&wiz_collection=&wiz_collection_related_field=&wiz_view=&wiz_action=sysverb_new&sys_id=ea7d96126f92a100f3ae60526e3ee4e0&sysparm_query=active=true&sysparm_target=&sys_target=change_ddfdff>Standard (from Template)
</a>
::after
</div>
....
还有10个具有相同类名的div部分,每个部分都是文本链接。我想点击其中一个(见上文)
切换到iframe需要上面的代码行。现在可以了
切换到iframe需要上面的代码行。现在可以了