簡體   English   中英

Python Selenium無法通過類名或XPath找不到元素

[英]Python selenium unable to find element neither by class name nor xpath

我是硒的新手。 我開始通過書本學習硒。 我為硒的不清楚行為而苦惱。 出於教育目的,我使用以下站點: http : //magento-demo.lexiconn.com/-我正嘗試通過其類名(即class ='button search button')或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')

但是每次硒都找不到。 請幫助我了解這種行為的原因。 謝謝

我使用了Selenium IDE,它向我展示了XPATH:// button [@ 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與按類等。

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

您可以嘗試:

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

我認為問題在於您的定位器不夠具體。 頁面上有多個button ,並且頁面上有class = button多個元素。 這個CSS選擇器為我工作。

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

使用xpath locator嘗試這種方式

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

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

要么

說明:使用<button>標簽的titletype屬性。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM