Python& Selenium Click和“TypeError:字符串索引必须是整数”

时间:2016-01-23 21:21:11

标签: python python-2.7 selenium-webdriver

我目前正在编写一段代码并使用该纪录片完成了许多阅读并查看了许多示例,但仍然无法修复我的错误。我正在使用Python和Selenium Webdriver。

问题在于:我正在尝试从使用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. 使用其他功能点击
  3. 欣赏它!

2 个答案:

答案 0 :(得分:6)

这是硒2.49中的known, currently open, issue。作为解决方法,降级到2.48

pip install selenium==2.48

我还会将定位器改进为:

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

答案 1 :(得分:0)

我没有看到Selenium 2.47的错误。我没有必要更改任何Xpath