2014-01-17 2 views
0

Selenium을 처음 사용하고 일부 문자열을 검색 한 후 Google 페이지에서 '이미지'링크를 클릭하여 액세스하려고합니다. 그러나 나는 이것을 할 수 없다. 셀레늄 파이썬에서 다음과 같은 :셀레늄 Python에서 xpath를 통해 html 요소 찾기

driver = webdriver.Firefox() 
driver.get ('http://google.com') 
q = driver.find_element_by_xpath ("id('gbqfq')")  # Search text box 
q.send_keys ('Apple') 
driver.find_element_by_name ('btnG').click() 

# I am now going to access the 'Image' link through following comamnd 
driver.find_element_by_xpath ("id('hdtb_msb')/x:div[2]/x:a").click() 

오류는 다음과 같습니다 :

selenium.common.exceptions.InvalidSelectorException: Message: u'The given selector id(\'hdtb_msb\')/x:div[2]/x:a is either invalid or does not result in a WebElement. The following error occurred:\nInvalidSelectorError: Unable to locate an element with the xpath expression id(\'hdtb_msb\')/x:div[2]/x:a because of the following error:\n[Exception... "An attempt was made to create or change an object in a way which is incorrect with regard to namespaces" 

내 질문 : 1. 왜이 오류가 (필자는 XPath를 얻기 위해 XPath는 검사기를 사용하고 있습니다)오고있다? 2. 다른 방법으로이 링크에 액세스 할 수 있습니까?

감사합니다! 내 연구 후

: 나는 현재 페이지의 핸들로드를 잡아 가지고있는 것처럼

같습니다? 제발 도와주세요, 전 완전히 새로운 것입니다.

+0

나는 그곳에서 세부 레슨을 택할 것이다. 하지만 여기서는 "XPath Checker"를 사용하고 특정 요소를 찾을 수 있습니다 (테스트 할 수 있습니다). 왜 이런 일이 일어 났는지 이해가 안되니? –

+0

@ user1177636 - 무엇이 잘못되었는지 말하면 도움이 될 것입니다. –

+1

하하, 나는 이미 그의 다른 질문 중 하나에 snarky 코멘트를 남겼습니다. 공정하다. –

답변

2

(네임 스페이스를 제거하십시오 즉, X :

+0

나는 이것이 똑같은 문제를 동시에 겪었 기 때문에 해결책이라고 생각하며, 단순히 네임 스페이스 "x :"를 제거함으로써 해결된다. 그러나 XPath Checker에서 제공하는 XPath에 왜 "x"가 있는지는 알 수 없습니다. – yaobin

0

난 당신이 XPath는 검색하려고하지만 어쩌면 당신은 유효한 값을 전달하지 않습니다 믿습니다.; 일반적으로 XPath는 구문이 하나입니다 : 내가 페이지를 구글 갔다 .//*[@id='hdtb-msb']/div[2]/a

내가 예를 들어 이미지를 확인하고이는 XPath는 다음과 같습니다 .//*[@id='hplogo']

당신이 불을 지르고 및 firepath을 다운로드 할 수있는 경우 I 조언에 파이어 폭스와이 도구들을 통해 당신이 필요로하는 xpath를 얻을 수있다.

관련 문제