我无法弄清楚如何点击"返回"当我让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来处理搜索请求。
答案 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也提到了它。