【问题标题】:Getting search bar ID for selenium获取 selenium 的搜索栏 ID
【发布时间】:2016-11-08 22:45:15
【问题描述】:

试图从这个网站获取搜索栏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()

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

【问题讨论】:

  • 您应该阅读有关不同类型选择器的教程。 find_element_by_id 方法采用 id 而不是 XPath。
  • 阅读使用该类型选择器的教程,可能是我迷路的原因,你能帮帮我吗?谢谢。

标签: python html selenium


【解决方案1】:

您要搜索的标签中没有 id 属性。您可以改用 css 选择器。这是一个示例 sn-p:

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)

sn-p 上方会在搜索栏中插入“sky”并按回车键。

【讨论】:

    【解决方案2】:

    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:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-04
      • 1970-01-01
      • 1970-01-01
      • 2020-08-04
      • 1970-01-01
      • 2020-12-15
      • 2021-01-04
      相关资源
      最近更新 更多