ページのいくつかの要素がロードされるのを待ってから、ページのデータの入力/取得を続行しようとしています。いくつかの読みがこの種のコードに私をリードしている:要素がCSSセレクタで特定要素を読み込むのを待っています
#including imports in case they are influencing things
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver.get('example.com')
try:
element1_present = EC.presence_of_element_located((By.ID, 'id'))
WebDriverWait(driver, timeout).until(element1_present)
except TimeoutException:
print('Timed out waiting for page to load')
#Then get some data from example.com
これはうまく動作しますが、しかし、私は要素はCSSセレクタではなく、IDによって存在しているかどうかを判断したいと思います。 Seleniumのドキュメントは私を混乱させています。 presence_of_element_located
メソッドは引数として "ロケータ"を取りますが、By
のドキュメントを見ると、(By.ID, 'id')
が有効なロケータであることはわかりません(明らかに動作しますが、これはわかりません)。具体的には、CSS Selectorロケータとしてコード化する方法はわかりません。
私はBy.cssSelector
、By.CSS
を試みた、とBy.ID
の代わりに、他の類似の用語、および約括弧を移動するが、私はいつも戻っていています:
AttributeError: type object 'By' has no attribute 'cssSelector'
または類似のもの。私はなぜID
がBy
とcssSelector
の有効なアトリビュートであるのか分からないので、どこかのドキュメントが明らかに欠けています。私は何が欠けていますか?
完璧に動作します。そのページに私を指摘してくれてありがとう! – Menixm