如何使用Splinter单击“返回”

时间:2014-05-25 18:59:20

标签: python selenium splinter

我无法弄清楚如何点击"返回"当我让Splinter库将文本输入到reddit的主搜索栏中时,由于它没有搜索按钮,我可能必须点击"返回"

我在这里看到了一个类似的问题,但它对我的情况不起作用,也是该人写的答案。

class NavigationPage(object):

    def __init__(self, br):
        self.br = br
        self.url = "http://reddit.com"

    @property
    def retrieve_reddit_search_bar(self):
        """
        Retrieves search bar by it's name
        """
        return self.br.find_by_name("q")

    def search(self, search_term):
        self.retrieve_reddit_search_bar.first.fill(search_term) # fills search bar
        self.br.execute_script("document.getElementsByName('q')[0].submit()")

它在搜索方法的第二个语句中失败并带有回溯。如果有人知道该怎么做,你能否告诉我如何应用这个" return"点击所有网站的商家?我想他们会执行类似的javascript来处理搜索请求。

2 个答案:

答案 0 :(得分:3)

好吧,这看起来很有趣。这个想法突然冒出来了,但现在是:

“返回”键单击等同于'\ n'字符。这意味着每个搜索词必须以新的换行符结束。通过这样做,返回键被自动点击,我被带到reddit中搜索结果!

所以,命令看起来像:

b = Browser()
b.visit('http://reddit.com')
b.fill('q', 'intp\n')

当selenium / splinter填充搜索词时,您将被带到搜索结果中。

答案 1 :(得分:0)

我发现'\ r'可以替换'\ n',因为以下代码也有效:

b = Browser()    
b.visit('http://reddit.com')
b.fill('q', 'intp\r')

它也适用于类型函数:

b = Browser()    
b.visit('http://reddit.com')
b.type('q', 'intp\r')

它似乎是由Selenium本身实现的,因为以下代码直接调用Selenium命令的行为也相同:

b = Browser() 
b.visit('http://reddit.com')
element = b.driver.find_element_by_css_selector('[name={}]'.format('q'))
element.send_keys('intp\r')

post也提到了它。