>source

셀레늄을 사용하여 웹 페이지를 검색하려고 합니다. 아래는 검색 페이지의 HTML code 스니펫입니다.

<div class="cmp-globalsite-search ac_box">     <input id="searchString" type="text" class="form-control searchString
          ac_input" placeholder="Search" aria-label="Search" required="" autocomplete="off">     <input type="hidden" id="searchTargetUrl" value="/en/search">     <a class="searchHead btn" href="#">     <span class="nav-icon gcom-icon-search"></span>     </a></div>

위의 내용은 다음에서 가져온 것입니다.https://www.gartner.com.

검색 페이지를 사용하기 위해 아래 python code를 사용하고 있습니다.

url= 'https://www.gartner.com/'
driver= webdriver.Chrome(executable_path='path to chrome web driver')
driver.get(url)
elem= driver.find_element_by_id("SearchString")
elem.send_keys("Risk Management Solution")
elem.send_keys(keys.RETURN)

이상한 것은 아래 오류가 발생한다는 것입니다.

NoSuchElementException: no such element: Unable to locate element: {"method":"css
selector","selector":"[id="SearchString"]"}
(Session info: chrome=97.0.4692.71)

아래도 시도했습니다.

elem= driver.find_element_by_xpath("""//input[@id="searchTargetUrl"]/input[@value= "Risk Management Solution""")

유사한 오류 발생:

InvalidSelectorException: invalid selector: Unable to locate an element with the xpath
  expression //input[@id="searchTargetUrl"]/input[@value= "Risk Management Solution because
  of the following error:
  SyntaxError: Failed to execute 'evaluate' on 'Document': The string
  '//input[@id="searchTargetUrl"]/input[@value= "Risk Management Solution' is not a valid
  XPath expression.
  (Session info: chrome=97.0.4692.71)

저는 셀레늄에 대한 초보자이므로 어떤 단서를 요청합니다.

업데이트

복사했습니다전체 xpath위 사이트에서 검색 페이지의.

//*[@id="gartnerinternalpage-9ac4556e05"]/div[2]/div/div/div/div/div/div/section/div/div/div[1]/div[2]/div/div[1]/input

그래서 파이썬 code에서 위의 xpath 문자열을 교체하고 추가했습니다./입력[@값={0}]

아직 운이 없다!!

  • 답변 # 1

    id가 있는 검색 필드검색 문자열기본적으로 숨겨져 있습니다. DOM에 있지만 보이지 않습니다.

    해당 필드에 무엇이든 입력하려면 먼저 cssSelector에서 찾을 수 있는 다음 버튼을 클릭해야 합니다.a.dropdown-toggle span.gcom-icon-search:

    URL로 이동한 후 다음 code 줄을 작성할 수 있습니다.

    driver.find_element_by_css_selector('a.dropdown-toggle span.gcom-icon-search').click()
    

    위의 개체를 클릭하면 텍스트를 입력하려는 검색 필드가 표시됩니다.

  • 이전 javascript : Chrome devtools에서 async/await에 중단점을 둘 수 없습니다.
  • 다음 django 루트 모듈에 대한 보기를 만드는 방법