当我使用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()")在search方法中的第二条语句中,它在回溯时失败。如果有人知道如何做,你还能告诉我如何应用这个“返回”点击所有网站的业务吗?我想他们会执行类似的javascript来处理搜索请求。
发布于 2014-05-26 08:43:08
好吧,那似乎很有趣。这个想法不知从哪里冒出来,但现在却是这样:
“返回”键单击等同于'\n‘字符。这意味着每个搜索词都必须以一个新的行字符结束。通过这样做,返回键将被自动单击,我将被带到reddit中搜索结果!
因此,这个命令看起来应该是:
b = Browser()
b.visit('http://reddit.com')
b.fill('q', 'intp\n')当selenium/splinter填充搜索项时,您会被带到搜索结果。
发布于 2015-11-02 15:08:11
我发现'\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也提到了它。
https://stackoverflow.com/questions/23858867
复制相似问题