【问题标题】:Searching a query in Linkedin using the search bar? I'm using Selenium (in python)使用搜索栏在 Linkedin 中搜索查询?我正在使用 Selenium(在 python 中)
【发布时间】:2019-07-30 21:20:37
【问题描述】:

所以我尝试使用 selenium 在 LinkedIn 上搜索公司名称,但搜索栏似乎有一堆元素相互叠加。我尝试使用的每个 id 或类,我都会收到错误:“AttributeError”。有人可以指导我使用哪个 id 或 class 吗?我真的很感激!

driver = webdriver.Chrome()
driver.get('https://www.linkedin.com/login')


username = 'xxxxxxx'
password = 'xxxxxxx'


nameidElem = driver.find_element_by_id('username')
nameidElem.send_keys(username)
pwdidElem = driver.find_element_by_id('password')
pwdidElem.send_keys(password)
continueElem = driver.find_element_by_class_name("btn__primary--large")
result = continueElem.submit()
time.sleep(5)


search = driver.find_element_by_id("nav-search-artdeco-typeahead").click()
search.send_keys('sports')
search.submit()

【问题讨论】:

    标签: python selenium web-scraping


    【解决方案1】:

    在搜索输入上尝试以下步骤,

    search = driver.find_elements_by_xpath("//input[@aria-label='Search']").click()
    search.send_keys('sports')
    search.submit()
    

    【讨论】:

    • css 选择器的替代方案 -> input[aria-label='Search']
    【解决方案2】:
    1. 考虑使用Explicit Waits 以确保元素在与它们交互之前存在/可见/可点击。查看How to use Selenium to test web applications using AJAX technology文章了解更多详情
    2. 当您单击该元素时,它可能会在DOM 中更改其状态,因此您可能需要再次调用find_element 函数
    3. 您可能想要更改定位器以匹配以下元素:

      <input role="combobox" autocomplete="off" spellcheck="false" aria-autocomplete="list" aria-invalid="false" aria-expanded="false" aria-label="Search" placeholder="Search" type="text">
      
    4. 把所有东西放在一起:

      nameidElem = WebDriverWait(driver, 10).until(expected_conditions.presence_of_element_located((By.ID, "username")))
      nameidElem.send_keys(username)
      pwdidElem = WebDriverWait(driver, 10).until(expected_conditions.presence_of_element_located((By.ID, "password")))
      pwdidElem.send_keys(password)
      continueElem = WebDriverWait(driver, 10).until(
          expected_conditions.presence_of_element_located((By.CLASS_NAME, "btn__primary--large")))
      result = continueElem.submit()
      
      search = WebDriverWait(driver, 10).until(
          expected_conditions.presence_of_element_located((By.XPATH, "//input[@placeholder='Search']"))).click()
      WebDriverWait(driver, 10).until(
          expected_conditions.element_to_be_clickable((By.XPATH, "//input[@placeholder='Search']"))).send_keys('sports')
      WebDriverWait(driver, 10).until(
          expected_conditions.element_to_be_clickable((By.XPATH, "//input[@placeholder='Search']"))).submit()
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-01
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多