動的 HTML ページを Web スクレイピングする場合、EC.presence_of_element_located で WebDriverWait を使用する() を使用すると待機できますデータを取得する前に表示される特定の要素。通常、要素は ID で指定します。ただし、特定のシナリオでは、代わりにクラスで要素を指定する必要がある場合があります。
元のコードは、EC.presence_of_element_located((By.class, "ng-binding ng- scope")):
element = WebDriverWait(driver,100).until(EC.presence_of_element_located((By.class, "ng-binding ng-scope")))
ただし、この構文は WebDriver の Locator に準拠していないため機能しません。構文規則。 By.class メソッドは、引数として複数のクラス名をサポートしません。
この問題を解決するには、presents_of_element_located( ) 関数を By.CSS_SELECTOR または By.XPATH とともに使用して、ID 属性とクラス属性の両方を次のように指定します。
CSS_SELECTOR の使用:
element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".ng-binding.ng-scope#tabla_evolucion")))
XPATH の使用:
element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//*[@class='ng-binding ng-scope' and @id='tabla_evolucion']")))
ID とクラスの組み合わせ属性を使用すると、クラスのみが存在する場合でも、目的の要素を正確に見つけることができます。指定されています。
以上がSelenium の EC.presence_of_element_located() を複数のクラス名で使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。