2017-03-20 155 views
0

我是Selenium的新手。我開始通過書來學習Selenium。我與硒的不清楚的行爲鬥爭。對於教育目的我使用這個網站: http://magento-demo.lexiconn.com/ - 我試圖找到它的類名搜索按鈕,(那就是:類=「按鈕搜索按鈕」),或將其XPATHPython硒無法通過類名和xpath找到元素

search_button = self.driver.find_element_by_xpath('/html/body/div/div[2]/header/div/div[4]/form/div[1]/button') 

search_button = self.driver.find_element_by_class_name('button') 

但每次硒都找不到它。請幫我理解這種行爲的原因。謝謝

我用硒IDE和它表明我XPATH://按鈕[@類型=「提交」]

,當我試圖找到XPath的元素,我已經得到了同樣的錯誤,這是奇怪的。請指教。

我的代碼是:

import unittest 
from selenium import webdriver 

class HomePageTest(unittest.TestCase): 
    @classmethod 
    def setUpClass(cls): 
     #create new Firefox session 
     cls.driver = webdriver.Firefox() 
     cls.driver.implicitly_wait(30) 
     cls.driver.maximize_window() 

     #navvigate to application home page 
     cls.driver.get('http://magento-demo.lexiconn.com/') 

    def test_search__text_field_max_length(self): 
     #get the search text box 
     search_field=self.driver.find_element_by_id("search") 

     #check maxlenght attribute st to 128 
     self.assertEqual("128",search_field.get_attribute("maxlength")) 

    def test_search_button_enabled(self): 
     # get Search button 
     search_button = self.driver.find_element_by_class_name('button') 

     # check Search button is enabled 
     self.assertTrue(search_button.is_enabled()) 



    @classmethod 
    def tearDown(self): 
     #close the browser window 
     self.driver.quit() 


if __name__=='__main__': 
    unittest.main(verbosity=2) 
+0

請包括您收到的任何錯誤消息。 – JeffC

回答

1

試試這個:

search_button = self.driver.find_element_by_xpath('//button[@class="button search-button"]') 
+0

錯誤是在tearDown方法。我想作出更大的回答,但我被禁止。 :' - (如果有論壇的教育部分? –

0

嘗試下載硒IDE插件,安裝和開始錄製。點擊你想要的按鈕並查看其目標在IDE中的記錄方式。以編程方式,selenium將接受與IDE相同的xpath和其他選擇器。它被記錄在IDE後,有一個下拉目標字段,可以讓你看到所有你可以選擇元素,即XPath的主場迎戰不同的方式按類等

http://www.seleniumhq.org/projects/ide/

你可能嘗試:

css=button.button.search-button 
//button[@type='submit'] 
//form[@id='search_mini_form']/div/button 
0

我認爲問題是您的定位器不夠具體。頁面上有多個button,頁面上有多個具有class =按鈕的元素。這個CSS選擇器正在爲我工​​作。

self.driver.find_element_by_css_selector("button[title='Search']") 
0

嘗試使用xpath locator

解釋是這樣的:使用title<button>標籤的屬性。

self.driver.find_element_by_xpath("//button[@title='Search']") 

OR

說明:使用title<button>標籤的type屬性。

self.driver.find_element_by_xpath("//button[@title='Search'][@type='submit']") 
+0

如果問題解決了,請將此答案標記爲「已接受」。 –