获取selenium的搜索栏ID

时间:2016-11-08 22:45:15

标签: python html selenium

尝试从此网站获取搜索栏ID:http://www.pexels.com

browser = webdriver.Chrome(executable_path="C:\\Users\\James\\Documents\\PythonScripts\\chromedriver.exe")
url = "https://www.pexels.com"
browser.get(url)
browser.maximize_window()


search_bar = browser.find_element_by_id("//input[@id='search__input']")
search_bar.send_keys("sky")
search_button.click()

然而,这是不正确的,我不知道如何让搜索工作。第一次使用硒所以所有的帮助表示赞赏!

2 个答案:

答案 0 :(得分:2)

您要搜索的代码中没有id属性。您可以改用css选择器。这是一个示例代码段:

search_bar = driver.find_element_by_css_selector("input[placeholder='Search for free photos…']");
search_bar.send_keys("sky")
search_bar.send_keys(Keys.RETURN)

上面的代码片段会在搜索栏中插入“天空”并点击“输入”按钮。

答案 1 :(得分:1)

Locating Elements给出了如何使用Selenium定位元素的解释。

您要选择的元素在DOM中如下所示:

<input required="required" autofocus="" class="search__input" type="search" placeholder="Search for free photos…" name="s"> 

由于未指定ID,因此无法使用find_element_by_id

对我来说这很有效:

search_bar = driver.find_element_by_xpath('/html/body/header[2]/div/section/form/input')
search_bar.send_keys("sky")
search_bar.send_keys(Keys.RETURN)

对于选择,您还可以使用类名:

search_bar = driver.find_element_by_class_name("search__input")

或名称标签:

search_bar = driver.find_element_by_name('s')

但是,如果有更多具有相同名称的元素(link

,则按名称查找元素可能不是一个好主意。

顺便说一句,如果你不确定xpath,google Chrome检查工具可以让你从文档中复制xpath: enter image description here