2014-10-02 50 views
0

我正在嘗試使用「selenium」包進行網站交互。我有一個問題理解這行做:與使用硒的網站進行交互

elem = driver.find_element_by_name("q") 

,檢查之前,該網站包含在標題中註明「蟒蛇」行。然後這條線以某種方式在網頁上找到帶有字母「q」的搜索文本框。包文檔跳過了這一點,我錯過了什麼?

全碼:

import unittest 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 

class PythonOrgSearch(unittest.TestCase): 

    def setUp(self): 
     self.driver = webdriver.Firefox() 

    def test_search_in_python_org(self): 
     driver = self.driver 
     driver.get("http://www.python.org") 
     self.assertIn("Python", driver.title) 
     elem = driver.find_element_by_name("q") 
     elem.send_keys("pycon") 
     assert "No results found." not in driver.page_source 
     elem.send_keys(Keys.RETURN) 

    def tearDown(self): 
     self.driver.close() 

if __name__ == "__main__": 
    unittest.main() 

到目前爲止,我可以看到,我可以用查找特定的元素:

find_elements_by_name 
find_elements_by_xpath 
find_elements_by_link_text 
find_elements_by_partial_link_text 
find_elements_by_tag_name 
find_elements_by_class_name 
find_elements_by_css_selector 

但爲什麼「Q」明確指向搜索框中蟒蛇網站?

+0

看看問題中的網站的HTML - 出於某種原因,你試圖選擇的框被命名爲「q」。 – 2014-10-02 21:21:53

回答

0

如果我進入調試器來檢查用作在www.python.org頁面頂部的搜索框元素,這是我所看到的:

<input id="id-search-field" name="q" role="textbox" class="search-field placeholder" placeholder="Search" tabindex="1" type="search"> 

注意屬性name="q"。該元素被命名爲q因此driver.find_element_by_name("q")發現它。

+0

完美,謝謝!在HTML腳本中查找元素名稱後,我會看到你做了什麼。謝謝! – Ciaran 2014-10-03 07:13:46

相關問題