2014-10-02 51 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

相关问题