2016-01-23 62 views
4

我目前正在研究一段代碼,並使用紀錄片完成了很多閱讀並查看了很多示例,但仍然無法修復我的錯誤。我正在使用Python和Selenium Webdriver。Python和Selenium Click和「TypeError:字符串索引必須是整數」

下面是問題:我試圖從使用Javascript的HTML頁面中提取圖像。一旦我使用selenium webdriver,就會顯示函數調用的結果(在firefox中),但是我無法點擊頁面底部的數字以進入第3或第4頁。

這裏是我有問題的HTML代碼:

<div class="pagebook" data-reactid=".1.0.2.0"><div style="display:none;" data-reactid=".1.0.2.0.0"></div><div class="active" data-reactid=".1.0.2.0.1:$0">1</div><div class="" data-reactid=".1.0.2.0.1:$1">2</div><div class="" data-reactid=".1.0.2.0.1:$2">3</div><div class="" data-reactid=".1.0.2.0.1:$3">4</div><div class="" data-reactid=".1.0.2.0.1:$4">5</div><div class="" dat<div class="next" style="margin-right:20px;" data-reactid=".1.0.2.0.$6">►</div></div> 

我使用XPath能力這樣做的呼叫:browser.find_element_by_xpath('//div[@data-reactid=".1.0.2.0.1:$2"]').click()

我第一次這樣做,它的工作了幾下,然後將其給了我一個錯誤,我再也不能使用它了。錯誤是:

File "C:\Python27\Lib\site-packages\selenium-2.49.2-py2.7.egg\selenium\webdriver\remote\errorhandler.py", line 111, in check_response 
    message = value["value"]["message"] 
TypeError: string indices must be integers 

這裏是我使用的代碼:

browser = webdriver.Firefox() 
browser.implicitly_wait(5) #backup wait of 5 seconds just in case 
browser.get(url2) 
browser.find_element_by_xpath('//div[@data-reactid=".1.0.2.0.1:$2"]').click() 

我所尋找的幫助:

  1. 錯誤
  2. 使用不同的功能用於點擊

欣賞它!

+0

它是**滿**錯誤信息? – furas

+0

@furas是msg的主要錯誤:「TypeError:字符串索引必須是整數」。我應該包含整個Traceback嗎? – BigMike

回答

5

這是一個在硒2.49中的known, currently open, issue。作爲一種變通方法,降級到2.48

pip install selenium==2.48 

我也將改善定位器:

//div[@class="pagebook"]/div[. = "2"] 
+0

我安裝了2.48。當我運行該程序時,網頁仍然不會改變。你有任何其他的想法如何從HTML中提取?我得到的使用你的定位器的錯誤:selenium.common.exceptions.InvalidSelectorException:消息:給定的選擇器// div [@class「pagination」]/div [。 =「2」]無效或不導致WebElement。發生以下錯誤:InvalidSelectorError:找不到具有xpath表達式的元素// div [@class「pagebook」]/div [。 =「2」],因爲有以下錯誤: SyntaxError:表達式不是合法表達式。 – BigMike

+0

@BigMike你在'@ class'之後缺少'='。這不是我提供的選擇器。 – alecxe

+0

現在它似乎工作。關於如何在不使用xpath函數(find_element_by_xpath)的情況下找到HTML頁面底部的按鈕,您還有其他想法嗎? – BigMike

0

我沒有看到這個錯誤硒2.47。我沒有改變我的任何Xpaths

+0

這很好。硒2.49似乎是麻煩製造者。 – BigMike

相關問題