2017-01-09 4 views
0

セレンを使用してリンクをクリックすることはできますが、同じタブで開くのではなく新しいタブが開きます。アドレスバーには表示されず、ページのコンテンツには表示されません。セレンを使用してテキストリンクをクリックする

パブリッククラスInternetExplorerDriverTest {

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

}

} 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) 

答えて

0
​​

上記のコード行はiframeに切り替える必要がありました。これは今動作します。

0

この例を検討してみてください:https://sites.google.com/a/chromium.org/chromedriver/getting-started

また、あなたのリンク先が_blankである可能性はありますか?

ここで働く簡単な例です:

パッケージ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() 
} 
0

私は質問を言い換えています:以前の問題は、クロムドライバをもう一度初期化していたためです。 今回は、ドライバオブジェクトをメソッドに渡しています。

今、私がクリックしようとしているリンクが全く認識されていないことがわかりました。クロムで 開発ツールは、以下の構造のように私のリンクを示しています?

<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> 
.... 

がどのように特定し、この特定のテキストリンクをクリックしてください、私はCSSセレクタ、のXPathなどを試みたが、

anchors = dd.findElements(By.linkText(Standard (from Template)));  

anchors2 =  dd.findElements(By.cssSelector(a[href*='ea7d96126f92a100f3ae60526e3ee4e0']))); 
を動作しませんでした

また、それぞれがテキストリンクである同じクラス名を持つ10個のdivセクションがあります。私はそれらをクリックしたい(上記を参照)

関連する問題