2017-03-20 119 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

如果问题解决了,请将此答案标记为“已接受”。 –