Python selenium无法通过类名或xpath找到元素

Python selenium无法通过类名或xpath找到元素,python,selenium-webdriver,Python,Selenium Webdriver,我是硒的新手。我开始通过书本学习硒。我还与硒的不明行为作斗争。出于教育目的,我使用本网站: -我试图通过它的类名来查找SearchButton,也就是class='ButtonSearchButton',或者通过xpath来查找它 search_button = self.driver.find_element_by_xpath('/html/body/div/div[2]/header/div/div[4]/form/div[1]/button') 或 但每次硒都找不到它。请帮助我了解这种行

我是硒的新手。我开始通过书本学习硒。我还与硒的不明行为作斗争。出于教育目的,我使用本网站: -我试图通过它的类名来查找SearchButton,也就是class='ButtonSearchButton',或者通过xpath来查找它

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

但每次硒都找不到它。请帮助我了解这种行为的原因。多谢各位

我使用了Selenium IDE,它显示了XPATH://按钮[@type='submit']

当我试图通过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)
试试这个:

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

尝试下载selenium IDE插件,安装并开始录制。单击所需的按钮,查看其目标在IDE中的记录方式。通过编程,selenium将接受与IDE相同的XPath和其他选择器。在IDE中记录之后,目标字段上会有一个下拉列表,让您可以看到选择该元素的所有不同方式,即xpath与按类等

您可以尝试:

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

我认为问题在于你的定位器不够具体。页面上有多个按钮,页面上有多个class=button的元素。这个CSS选择器适合我

self.driver.find_element_by_css_selector("button[title='Search']")
使用xpath定位器试试这种方法

说明:使用标签的title属性

说明:使用标签的title和type属性


请包括您收到的任何错误消息。错误在拆卸方法中。我想做出更大的回答,但我被禁止了如果论坛中有教育方面的内容?请将此答案标记为已接受,如果它解决了您的问题。
self.driver.find_element_by_css_selector("button[title='Search']")
self.driver.find_element_by_xpath("//button[@title='Search']")
self.driver.find_element_by_xpath("//button[@title='Search'][@type='submit']")