2017-06-23 3 views
0

ページのいくつかの要素がロードされるのを待ってから、ページのデータの入力/取得を続行しようとしています。いくつかの読みがこの種のコードに私をリードしている:要素が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.cssSelectorBy.CSSを試みた、とBy.IDの代わりに、他の類似の用語、および約括弧を移動するが、私はいつも戻っていています:

AttributeError: type object 'By' has no attribute 'cssSelector' 

または類似のもの。私はなぜIDBycssSelectorの有効なアトリビュートであるのか分からないので、どこかのドキュメントが明らかに欠けています。私は何が欠けていますか?

答えて

1

By.CSS_SELECTORを使用します。あなたのreferenceのために


、ここByクラスで利用可能な属性である:

ID = "id" 
XPATH = "xpath" 
LINK_TEXT = "link text" 
PARTIAL_LINK_TEXT = "partial link text" 
NAME = "name" 
TAG_NAME = "tag name" 
CLASS_NAME = "class name" 
CSS_SELECTOR = "css selector" 
+0

完璧に動作します。そのページに私を指摘してくれてありがとう! – Menixm

関連する問題