2013-05-16 33 views
0

在我以前的步骤中,我有一个问题,从div获取文本,几个小时后终于得到了我想要的,但下一步并不容易,因为我想循环打印文本(变量)。如何在Python中循环提取硒与硒?

我希望你是放纵的家伙,我不会得到downvoted只是因为我是新的python。 这是我已经得到了一部分:

import selenium 
from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get('http://example.com//') 
botloc = driver.find_element_by_id('botloc').text 
print botloc 

def repeat(): 
    while 1 == 1: 
     botloc = driver.find_element_by_id('botloc').text 
     print botloc 

一个真正的网站地址已经更改,作为预防措施。

代码的前半部分工作正常,但第二部分没有。 在Shell中输入repeat后,响应为<function repeat at 0x015BBFB0>。这不是来自div的文本,对我来说(新手)它看起来像对象值或什么...当print botloc后的回应是u'26,40',那么为什么我的def repeat()是不一样的?我该如何解决这个问题?

+0

您正在输入'repeat'?你不需要输入'repeat()'来评估函数吗?函数是Python中的第一类对象(据我所知)。您可以像其他任何物体一样将它们传递出去。因此,在没有括号的情况下输入'repeat'就可以得到'repeat'变量所保存的函数对象。 – jpmc26

+0

为什么你的''repeat''函数包含一个while循环(它永远不会结束)?你想用它达到什么目的? – lqc

+0

@lqc我的'重复'函数包含一个while循环,因为我想实现包含在div中的实际文本,该文本反映了我的英雄在Web浏览器中的方形地图上的坐标。坐标将被用于与机器人通信,给他他真正的位置。也许我的逻辑被打破了,我走了迂回的路线,但那还是我自己的逻辑,我不知道另一种获得坐标的方式。你知道意外有时候是最好的!但感谢stackoverflow。 – Mezulith

回答

0

用下面的代码创建一个文件selenium.py

from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get('http://www.helloworld.com/') 
print driver.find_element_by_css_selector("a[href*='privacy']").text 

def repeat(): 
    while 1 == 1: 
     print driver.find_element_by_css_selector("a[href*='privacy']").text 

repeat() # this is what you need! 

更改URL,以你自己的一个,并更改定位器到你的,即driver.find_element_by_id('botloc').text

然后在命令行:运行python selenium.py,它应该是工作

不过,我虽然怀疑你的测试逻辑,如果在循环过程的DOM的变化,将引发异常。

+0

无限循环在测试中不是很有用。 – lqc

+0

谢谢你,我没想到我是那么接近于正确的代码。感谢您的修复。所以,现在,当我移动我的英雄,在otput是:'26,19 26,19 26,19 26,20 26,20 26,20 26,20 26,21 26,21 26,21 26,21 26,22 26,22 26,22 26,23 26,23 26,24 26,24 26,25'坐标更新速度非常快,我想现在我会放一些时间函数来创建它,每0.2秒:) – Mezulith