2017-03-29 7 views
0

私はPythonSeleniumを使ってテストケースを自動化しています。Python Selenium webdriverできませんTimeoutException:要素を待っているときのメッセージ

//*[@id="fybAddCartEvent"] 

何の問題が考えられます。問題は、私はtest_press_add_to_cartに到達したときWebdriverxpathを持つ要素を見ていないということでしょうか?

例外は次のとおりです。

"TimeoutException:メッセージ"

要素のHTMLは次のとおりです。

<a href="#" class="button" data-product_id="18542" data-wp_nonce="7c3d595f98" id="fybAddCartEvent"> 
Add to cart</a> 

、スクリプト:

from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.firefox.webdriver import WebDriver 
from selenium.webdriver.common.action_chains import ActionChains 
from HTMLTestRunner import HTMLTestRunner 

class Fotball_add_to_cart(unittest.TestCase): 
    @classmethod 
def setUpClass(inst): 
    inst.driver = webdriver.Chrome('C:/chromedriver/chromedriver.exe') 
    driver = inst.driver 
    driver.get("http://ak:[email protected]/football/") 
    inst.driver.maximize_window() 
    time.sleep(5) 

    #click on "View All Fotball Products" 
def test_click_on_view_all_fotball_products(self): 
    viewProductsXpath = "a.woocommerce-nested-category-layout-see-more" 
    self.viewProductsElement = self.driver.find_element_by_css_selector(viewProductsXpath) 
    self.viewProductsElement.click()              
    time.sleep(7) 
    #select a product 

def test_select_a_product_and_view_details(self): 
    #select product 
    tshirtXpath = "//a[@href=\"http://uat.athleticknit.com/product/f810/F810-000/\"]" 
    self.tshirtElement = self.driver.find_element_by_xpath(tshirtXpath) 
    self.tshirtElement.click() 
    time.sleep(60) 

def test_press_add_to_cart(self): 
    #press add to cart 
    driver = self.driver 
    addToCartXpath = '//*[@id="fybAddCartEvent"]' 
    self.addToCartElement =WebDriverWait(driver, 20).until(lambda driver: driver.find_element_by_xpath(addToCartXpath)) 
    self.addToCartElement.click() 
    time.sleep(5) 
@classmethod  
def tearDownClass(inst): 
    inst.driver.stop_client() 
    inst.driver.close() 
    inst.driver.quit() 
+0

iframe内にあるかどうか確認しましたか? – JeffC

+0

@ alisu245、あなたは同じ問題に直面していますか? – NarendraR

答えて

1

実はあなたは状態が続い満足TimeoutExceptionを示していないのであれば、それは20秒まで、あなたの状態を待っているとされる右ここ

self.addToCartElement =WebDriverWait(driver, 20).until(lambda driver: driver.find_element_by_xpath(addToCartXpath)) 

明示的な待機を使用していました。

あなたの要件は、次の方法を試し、その後「カートに入れる」のために待機する場合 -

element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.xpath, addToCartXpath))) 

注: - あなたは要素IDをお持ちの場合は、その後

element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "fybAddCartEvent"))) 

element.click() 
代わりのxpathのIDで要素を探してください
+0

私はbuiが動作していない、私はIDの後にも識別しようとしました。私の条件はカートに追加が表示されるのを待ってからそれをクリックすることです。要素を検索する前にコードに60秒の睡眠を入れて、時間が十分にあり、実際に要素が現れるが、path.or idで識別できない – alisu245

関連する問題