2014-01-17 100 views
0

我是Selenium的新手,嘗試訪問並單擊Google頁面上的「圖像」鏈接,只要它搜索了一些字符串。但我無法做到這一點。以下是硒的Python:通過Selenium 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

哈,看起來我已經對他的其他問題留下了尖銳的評論。很公平。 –

回答

2

嘗試刪除命名空間(即X :)

+0

我相信這是解決方案,因爲我今天也遇到了同樣的問題,並且通過簡單地刪除命名空間「x:」來解決它。但是,我不知道爲什麼XPath Checker提供的XPath有這個「x」的東西。 – yaobin

0

我相信,你正在試圖尋找的XPath,但也許你不通過一個有效的值。一般的XPath的語法,這是一個:.//*[@id='hdtb-msb']/div[2]/a

我去谷歌網頁,我檢查例如圖像,這是它的XPath:.//*[@id='hplogo']

在任何情況下,我建議您下載螢火蟲和firepath爲Firefox和通過這個工具,你檢索你需要的xpath

相關問題