web-dev-qa-db-ja.com

要素をクリックできない:Splinter / SeleniumのElementClickInterceptedException

ページをスクレイプしようとしていますが、リンク/ボタンをクリックするときに問題が発生することがあります。 Webページがロードされると、「loadingWhiteBox」が最初に表示され、数秒後に消えます(ただし、HTMLコードに残ります)ボックスがWebサイトに表示されている限り、リンクをクリックして、次のエラーメッセージを取得します。

Selenium.common.exceptions.ElementClickInterceptedException: Message: 
Element <span class="taLnk ulBlueLinks"> is not clickable at point 
(318.3000030517578,661.7999877929688) because another element <div 
class="loadingWhiteBox"> obscures it

これを回避する方法はありますか?私はすでに次のコマンドを使用してみました:

driver.is_element_present_by_css('div[class*="loadingWhiteBox"]')

しかし、要素はアクティブではない場合でも存在します。

9
yellow days

以下の2つの方法を試して、要素をクリックしてください。

element = driver.find_element_by_css('div[class*="loadingWhiteBox"]')
driver.execute_script("arguments[0].click();", element)

element = driver.find_element_by_css('div[class*="loadingWhiteBox"]')
webdriver.ActionChains(driver).move_to_element(element ).click(element ).perform()

これが機能することを願っています。

7
Pradeep hebbar

同じクラスまたは同じxpath/cssを持つ別の要素が画面に表示されるため、エラーが表示されます。

Thread.sleep()、wait()などの要素が表示されるまで、いくつかの待機メソッドを与えてみてください。

2
Gautam Bothra

要素がなくなるまで待つことができますが、

    WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.className("loadingWhiteBox")));
1
hakki atas