我是Selenium的新手。我开始通过书籍学习Selenium。我对Selenium的行为不清楚感到困惑。出于教育目的,我使用这个网站: http://magento-demo.lexiconn.com/ - 我正在尝试按类名找到搜索按钮(即:class ='按钮搜索按钮')或者按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://按钮[@ 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)
答案 0 :(得分:1)
试试这个:
search_button = self.driver.find_element_by_xpath('//button[@class="button search-button"]')
答案 1 :(得分:0)
尝试下载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
答案 2 :(得分:0)
我认为问题在于您的定位器不够具体。页面上有多个button
,页面上有多个带class =按钮的元素。这个CSS选择器对我有用。
self.driver.find_element_by_css_selector("button[title='Search']")
答案 3 :(得分:0)
使用xpath locator
说明:使用title
标记的<button>
属性。
self.driver.find_element_by_xpath("//button[@title='Search']")
OR
说明:使用title
标记的type
和<button>
属性。
self.driver.find_element_by_xpath("//button[@title='Search'][@type='submit']")