2016-04-26 13 views
1

ページ内の1つの要素をクリックする必要がありますが、ページは1〜2秒ごとにリフレッシュされます(ajax呼び出し)。使用されるブラウザはFirefoxです。selenium webdriver python:要素はポイントでクリック可能ではありません

コード:

ele = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH, ".//*[@id='dojox_grid__View_1']/div/div/div/div/table/tbody/tr/td[1]/div"))) 
print ele 
ele.click() 

エラー:この問題を克服する方法

mouseOnover.click() 
    File "/usr/lib/python2.6/site-packages/selenium-2.53.1-py2.6.egg/selenium/webdriver/remote/webelement.py", line 74, in click 
    self._execute(Command.CLICK_ELEMENT) 
    File "/usr/lib/python2.6/site-packages/selenium-2.53.1-py2.6.egg/selenium/webdriver/remote/webelement.py", line 457, in _execute 
    return self._parent.execute(command, params) 
    File "/usr/lib/python2.6/site-packages/selenium-2.53.1-py2.6.egg/selenium/webdriver/remote/webdriver.py", line 233, in execute 
    self.error_handler.check_response(response) 
    File "/usr/lib/python2.6/site-packages/selenium-2.53.1-py2.6.egg/selenium/webdriver/remote/errorhandler.py", line 194, in check_response 
    raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.WebDriverException: Message: Element is not clickable at point (267, 162.5). Other element would receive the click: <div style="width: 1360px; height: 621px;" id="dojox_grid_enhanced_plugins_Dialog_1_underlay" class="dijitDialogUnderlay dojoxGridFDTitlePane_underlay" tabindex="-1" data-dojo-attach-point="node"></div> 

答えて

1

ページの取得が2秒ごとにリフレッシュされる場合、この結果はすべて驚くほどのものではありません。あなたは要素を取得するまで10秒間待っていますが、その時までにページは数回リフレッシュされ、保持しているオブジェクトが古くなってしまいます。古い要素はクリックできません。私の提案は、ボディ要素を待って、すぐに関心の要素をつかむことです。

wait = WebDriverWait(driver, 1) 
body = wait.until(EC.element_to_be_clickable((By.TAG,'body'))) 
ele = wait.until(EC.element_to_be_clickable((By.XPATH, ".//*[@id='dojox_grid__View_1']/div/div/div/div/table/tbody/tr/td[1]/div"))) 
print ele 
ele.click() 

注1:要素を選択するにはxpathを使用しています。これは遅いです。通常はそれは問題ではありませんが、あなたの場合は時計に逆らって走っています。代わりにidを取得してみてください。問題の要素にidが1つもない場合は!

注2:この後も、要素がクリック可能でないことが判明した場合は、他の要素がそれをカバーしているためです。オーバーラップは透過的な背景によるかもしれないので気づかないかもしれません。

エラーメッセージを詳しく見ると、次のように表示されます。width: 1360px; height: 621px;要素が途中で入っています。この段階では、CSSにn個のエラーがあるようです。最も簡単なことは、CSSをセレンを使って変更することでこの問題の要素を隠すことです。機能

+0

ファイル「/usr/lib/python2.6/site-packages/selenium-2.53.1-要素_is_displayed()==可視性else False AttributeError: 'タプル'オブジェクトに属性がありません 'is_displayed' – Saran

+0

残念ながら更新された回答 – e4c5

+0

まだ要素はポイント(220,163)でクリックできません。他の要素は、クリックエラーが表示されます – Saran

関連する問題