Python 2.7 使用selenium与网站交互

Python 2.7 使用selenium与网站交互,python-2.7,selenium,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 impo

我正在尝试使用“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网站上的搜索框呢?

如果我进入调试器检查作为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
so
driver。按名称(“q”)
查找元素即可找到它。

查看相关网站的html-出于某种原因,您尝试选择的框名为“q”。非常好,谢谢!在HTML脚本中查找元素名称后,我看到了您所做的操作。谢谢