2017-07-09 15 views
0

プログラム内で、 "team"という単語を含むリンクを検索して、さまざまなWebサイトからのリンクをクリックする必要があります。私はそれを試してみるいくつかのウェブサイトでエラーを出しています。 、これはいくつかのウェブサイト上で動作しますSelenium Java - ElementNotInteractableExceptionリンクをクリックしようとしたとき

if (driver.getPageSource().contains("Team")) 
{ 
    driver.findElement(By.partialLinkText("Team")).click();  
    return; 
} 

しかし他人に私は私が必要として、しかし、この問題の原因を知らない

Exception in thread "AWT-EventQueue-0" org.openqa.selenium.ElementNotInteractableException: 

を取得しています: 次のように私のコードセグメントは、それは複数のページで動作するように、たとえば私はその応答を得るhttps://www.calipercorp.com/about-us/

すべての回避策や助けをいただければ幸いです。

if (driver.getPageSource().contains("Team")) 
{ 
    WebElement elem = driver.findElement(By.partialLinkText("Team"));  
    //Check if the element's type is a link 
    if (elem.getTagName().equals("a"){ 
      elem.click(); 
    } 
    return; 
} 

それとも、リンクのURLを取得し、検索したいと、それ

if (driver.getPageSource().contains("Team")) 
    { 
     WebElement elem = driver.findElement(By.partialLinkText("Team"));  
     //get the href attr 
     String url = elem.getAttribute("href");   
     //add code to go to the url above 
    } 

答えて

0

のは、これを試してみましょう部分テキストのリンク。あなたのアプローチは時間がかかります。

私は簡単でコードが少ないので、xpathを使うことをお勧めします。

//a[contains(text(),'Team')] 

時には、要素の表示/クリックができないことがあります。また時にはhrefが相対的な場合もあります。それを克服するにはJavaScriptをクリックしてください

要素の使用を確認するにはfindElementsはpageSourceには載っていません。

List<WebElement> teamEls=driver.findElement(By.xpath("//a[contains(text(),'Team')]")); 
if(!teamEls.isEmpty()) 
{ 
    WebElement team = teamEls.get(0); 
    if(team.isDisplayed()) 
    { 
     team.click(); 
    } 
    else 
    { 
     JavascriptExecutor js = (JavascriptExecutor) driver; 
     js.executeScript("arguments[0].click();", team); 
    } 


} 
+0

それを実行した後、私は悲しげに同じエラー –

+0

を得た私は、ウェブ上でいくつかのリンクがクリックできないので、それは正しくないことがあり、第一の溶液のための別の解決策を、追加しています。だから2番目のソリューションは、あなたはそれをクリックしないで、あなたはURLを取得し、直接このURLに行く –

0

に代わりクリックのこのリンクに行くために方法getAttribute("href")を使用することができます

関連する問題