2017-11-10 14 views
-1

Chromeウェブドライブで要素をクリックしようとしていますが、クリックする方法がわかりません。
私がログインした後のページが表示されているので、私は、ウェブサイトのURLを投稿することができない要素のHTMLコードがある
Chromeウェブドライブの要素をクリックする方法が見つかりません - Selenium

<gf-dashboard-card class="ng-scope ng-isolate-scope" href="/chat"> 
    <div class="card"> 
     <div class="card-icon"> 
      <i class="card-icon material-icons ng- 
      binding">question_answer</i> 
     </div> 
     <span style="text- 
     overflow:ellipsis;white-space:nowrap;overflow:hidden" 
     class="md-subhead ng-binding">Conversations</span> 
    </div> 
</gf-dashboard-card> 

は、私がどのような方法を試してみたこと私はできません要素をクリックすると考えるが、私は常にエラーを取得しておくよ:

Message: no such element: Unable to locate element 

要素のxpathが

//*[@id="dashboard-cards"]/gf-dashboard-card[1] 
です0

私には何も与えません。

一つ興味深いのは、Firefoxのwebdriverをして​​、私は

driver.find_element_by_class_name("ng-isolate-scope").click() 

でそれをクリックすることができますが、それはChromeで動作していないということです。
私は

$('.md-subhead').click(); 

でコンソールを介して要素をクリックすることができますしかし、セレンを経由して、これを実行する方法を考え出したていません。
どのように私はそれを実行することができますか?

+0

はあなたのコードをデバッグするとき、 ' – Mangohero1

+0

は、問題が原因で発生し確認するためにクリックする前に長い眠りを追加し' driver.find_element_by_css_selector(「span.md-小見出し」)を試してみてくださいページは完全に読み込まれません。 – yong

答えて

0

ロードと待ち時間に問題がありました。
は追加:

time.sleep(10) 

そして:

driver.find_element_by_xpath("//*[@id='dashboard-cards']/gf-dashboard- 
card[1]").click() 

をそれはあなたがクリック可能になるための要素を待つimplicitly_waitの代わりtime.sleepを使用する場合がありますだけでなく

+0

Seleniumには、このようなものをポーリングする機能があります。 http://selenium-python.readthedocs.io/waits.htmlを参照してください。 –

+0

@DavidKnipe正確に何が必要なのですか、ありがとう! – Kraki

+0

しかし、sleep()は良い解決策ではありません – iamsankalp89

1

を働きました。要素が10秒のタイムアウト前に見つかると、残りの時間を待つのではなく、その要素が継続します。ドキュメントから

An implicit wait tells WebDriver to poll the DOM for a certain amount of time when trying to find any element (or elements) not immediately available. The default setting is 0. Once set, the implicit wait is set for the life of the WebDriver object.

from selenium import webdriver 

driver = webdriver.Firefox() 
driver.implicitly_wait(10) # seconds 
driver.find_element_by_xpath("//*[@id='dashboard-cards']/gf-dashboard-card[1]").click() 
+0

ありがとう! time.sleepではなく、それを使う方が理にかなっています – Kraki

関連する問題