我正在尝试使用“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网站上的搜索框?
答案 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")
可以找到它。