4

当我制作 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()")

它在搜索方法的第二个语句期间回溯失败。如果有人知道怎么做,你能告诉我如何在所有网站上应用这个“返回”点击业务吗?我想他们执行类似的 javascript 来处理搜索请求。

4

2 回答 2

3

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

"Return" 键单击相当于 '\n' 字符。这意味着每个搜索词都必须以换行符结尾。通过这样做,返回键会被自动点击,我会被带到 reddit 中的搜索结果!

所以,命令看起来像:

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

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

于 2014-05-26T08:43:08.523 回答
0

我发现 '\r' 可以代替 '\n',因为下面的代码也可以:

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

它也适用于 type 函数:

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')

这篇文章也提到了它。

于 2015-11-02T15:08:11.300 回答