使用selenium与网站交互

时间:2014-10-02 21:14:12

标签: python-2.7 selenium

我正在尝试使用“selenium”软件包与网站进行互动。我在理解这条线的作用时遇到了问题:

elem = driver.find_element_by_name("q")

之前的行检查该网站在标题中是否包含单词“python”。然后,该行以某种方式在网页上找到带有字母“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”特意指向python网站上的搜索框?

1 个答案:

答案 0 :(得分: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")可以找到它。