2017-06-27 19 views
1

サイトにログインするスクリプトがあります。私はその後、私は成功せず、複数の方法を試してみましたselenium python hrefテキストでリンクを見つけてクリックしてください

<a href> </a>

に含まれている別のリンクをクリックする必要があります。 「利用可能なデプロイメント」が必要なリンクは、「ジョブボード」というドロップダウンボックスをクリックした後にのみ表示されます。

サイトコードは次のようになります。

<li class=""> 
    <a aria-expanded="false" class="dropdown-toggle" data-toggle="dropdown" href="portalPost?s=a1W390000045MxAEAU&amp;p=a1V39000003y7e1EAA" role="button">Job Board <span class="caret"></span> 
    </a> 
<ul class="dropdown-menu" role="menu"> 

<li> 
    <a href="portalPage?s=a1W390000045MxAEAU&amp;p=a1V39000003y7dbEAA">Available Deployments 
    </a> 
</li> 

私は成功せず、バージョンのカップルを試してみた:

-SNIP- 
driver.find_element_by_name("logmein").click() 
driver.find_element_by_linkText("Job Board").click()  
driver.find_element_by_linkText("Available Deployments").click() 

-SNIP- 
driver.find_element_by_name("logmein").click() 
driver.find_element_by_xpath(u'//a[text()="Job Board"]').click() 
driver.find_element_by_xpath(u'//a[text()="Available Deployments"]').click() 

を、私は通常、取得エラー次のようになります。

selenium.common.exceptions.NoSuchElementException:メッセージ:そのような要素がありません:要素を見つけることができません:{"method": "xpath"、 "selector": "// a [text()=" }

+0

"// [含まれています(@Text()、 '利用可能な展開')]" < - あなたはこれを確認することができますか? –

+0

これを最初にクリックする必要がありますか? - >はい、最初にクリックする必要があります。隠されたハイパーリンクをクリックすることはできません。 – Buaban

+0

@santhoshkumar私はあなたの提案を試みたが、同じ結果。たぶん私は構文が間違っている。あなたは私に全体のラインを与えることができますか? – jakethedog

答えて

3

要素のテキストに空白があるようです。 テキストをトリミングするにはnormalize-spaceを使用する必要があります。以下の例を参照してください。

driver.find_element_by_xpath(u'//a[text()="Job Board"]').click() 
waitForPresence = WebDriverWait(driver, 10) 
wait.until(EC.presence_of_element_located((By.XPATH,'//a[normalize-space(text())="Available Deployments"]'))) 
driver.find_element_by_xpath('//a[normalize-space(text())="Available Deployments"]').click() 
+0

私は自分のソリューションを見つけましたが、テストしました。 – jakethedog

1

私は次のようでこれを解決:

driver.find_element_by_link_text("Job Board").click() 
driver.find_element_by_link_text("Available Deployments").click() 
関連する問題