Python 2.7 使用selenium与网站交互
我正在尝试使用“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
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
sodriver。按名称(“q”)
查找元素即可找到它。查看相关网站的html-出于某种原因,您尝试选择的框名为“q”。非常好,谢谢!在HTML脚本中查找元素名称后,我看到了您所做的操作。谢谢