2017-10-20 3 views
0

私はGoogleとSEを何時間も検索したことを誓っています。私のケースに当てはまるものは何も見つかりませんでした。私が使用して私のリンクを設置しました定義されたスパンを使って見つかったリンクをクリックする方法は?


WebElement element = driver.findElement(By.linkText("News")); 

これは、しかし、リンク(<>タグ)を返しませんが、linkTextで> <スパンを返します。 element.click();、全体のブラウザは「ElementNotInteractableException」でダウンした:私はとき、そう

<a href="________" itemprop="url" style="height: 88px; line-height: 88px;"> 
    <span class="avia-bullet"></span> 
    <span class="avia-menu-text">News</span> 
    <span class="avia-menu-fx"> 
     <span class="avia-arrow-wrap"> 
      <span class="avia-arrow"></span> 
     </span> 
    </span> 
    <span class="dropdown_available"></span> 
</a> 

:リンク構造がどのように見えるかここで

です。私はこれがタイムアウトになるかもしれないと思ったが、私はそれに多くの時間を与えたが、それでも失敗する。
私はちょうど<スパンをクリックできないと思う。

しかし、私は彼の親(<>)にどのように言いますか?私が試した

:複雑なHTMLで

element=element.findElement(By.xpath("parent")); 
element=element.findElement(By.xpath("..")); 
+0

try要素= element.findElement(By.xpath( "./ ..")); '/ 'は現在のノードを表します。 ./を使用してセレンに現在のノードから親スタートを見つけるように指示する必要があります。ニュース – yong

答えて

0

を予想通り、セレンのデフォルトのメソッドは動作しません。このSOポストは、他のパス機能の詳細を持っている

driver.findElement(By.xpath("//a[contains(.,'News')]")).click(); 

をたとえば、以下のいずれかを試してみてください:XPath contains(text(),'some string') doesn't work when used with node with more than one Text subnode

+0

これは、テスト=ニュースを含む 'A'ではないため、うまくいきません... – DraxDomax

+0

あなたはあなたの答えで見つけた要素の親にどのように行くのですか? – DraxDomax

+0

は "text()"を "。"に置き換えました。 - 今すぐやってみて下さい。 – parishodak

0

あなたはどのようにXPath関数の異なる方法で試みるについて

スパンタグで何もしないでください。だからdiv/linkタグを取得して、その上でアクションを実行できるようにしてください。

//span[.='News']/ancestor::a 
//span[contains(.,'s')]/ancestor::a 

<!-- Any of its innerHTML Text (with out case-sensitive)--> 
//a[contains(.,'YY')] 

<!-- Next followed child nodes. --> 
//a[span[text()='News']] 
//a[span='News' and @style="height: 88px; line-height: 88px;"] 

<!-- Any of its child - child nodes. --> 
//a[.//span[text()='SS']] 


//a[[.='News'] and [.//span[contains(.,'YY')]]] 
//a[span='News' and [.//span[contains(.,'YYY')]] ] 

Test XML:あなたはそれを記述するよう

<a href="________" itemprop="url" style="height: 8px; line-height: 88px;"> 
    <span class="avia-menu-text">News</span> 
    <span class="avia-menu-fx"> 
     <span class="avia-arrow-wrap">SS 
      <span class="avia-arrow">YYY</span> 
     </span> 
    </span> 
</a> 
0

書き込みのxpath:

あなたが必要です。その中で定義されたスパンを使用している

リンクを?

//a[.//span] 

とスパンは、より具体的にする:ので、ここで

は、XPathで

//a[.//span[text()='News']] 

または

//a[.//span[contains(@class,'avia-menu-text')][text()='News']] 

またa要素にいくつかの仕様を追加することができ、またはそれは親アイテムです正しい項目を指定してください。

関連する問題