>  기사  >  백엔드 개발  >  \"span:contains(\'string\')\"을 사용하여 InvalidSelectorException을 해결하는 방법

\"span:contains(\'string\')\"을 사용하여 InvalidSelectorException을 해결하는 방법

DDD
DDD원래의
2024-10-18 22:02:03662검색

How to Resolve InvalidSelectorException with

"span:contains('string')"이 포함된 InvalidSelectorException

CSS 선택기 "span:contains('Control panel')을 사용하여 요소를 찾으려고 할 때 ", InvalidSelectorException이 발생하여 다음 오류를 표시합니다. "주어진 CSS 선택기 표현식 "span:contains('Control panel')"이 유효하지 않습니다.".

문제 #987 및 #1547에 설명된 대로 :contains 의사 클래스는 CSS 사양에 포함되지 않으며 Firefox와 Chrome 모두에서 지원되지 않습니다. 이 의사 클래스는 Selenium 1.0에서 사용되는 Sizzle 선택기 엔진에 고유했습니다. 그러나 WebDriver는 Sizzle의 CSS 선택기를 통합하지 않기로 결정하여 이러한 불일치를 초래했습니다.

이 문제를 효과적으로 해결하려면 태그:

element = "span[attribute_name=attribute_value]"

대체 솔루션

제공된 DOM 트리를 사용하여 요소를 찾으려면 다음 XPath 옵션을 고려하세요.

  • text():

    element = my_driver.find_element_by_xpath("//span[text()='Control panel']")
  • 사용

    contains():

    element = my_driver.find_element_by_xpath("//span[contains(.,'Control panel')]")
  • 사용

    normalize-space():

    element = my_driver.find_element_by_xpath("//span[normalize-space()='Control panel']")
jQuery 사용법

또한 다음 구문으로 jQuery를 사용할 수 있습니다.

$('span:contains("Control panel")')
주목할만한 관찰

@FlorentB의 통찰력에 따르면 CSS 선택기는 콘솔에서 지원되지 않지만 jQuery는 지원을 제공합니다. 콘솔 내의 '$(...)' 구문은 'document.querySelector'에 대한 약칭 표기법을 나타내며 페이지에 포함되면 jQuery에 의해 재정의됩니다.

위 내용은 \"span:contains(\'string\')\"을 사용하여 InvalidSelectorException을 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.