折腾:
【未解决】Mac中用Selenium自动操作浏览器实现百度搜索
期间,此处希望实现Selenium中,对于已经定位到的百度首页的搜索框,输入文字,并触发搜索
Selenium 输入文字
selenium input text
selenium input text python
此处,去输入内容,用代码:
1 | searchButtonElem.send_keys( "crifan" ) |
在输入之前,最好清除已有内容:
1 | searchButtonElem. clear () |
效果:
之后,对于:触发搜索
正常的思路是:
点击 百度一下 这个按钮
不过此处还有另外一个思路:
键盘上按 Enter回车键,也可以
所以分别去试试:
1 2 | # emulate press Enter key searchButtonElem.send_keys(Keys.RETURN) |
效果:
是可以:搜索出结果的。
另外,再去换另外一种:
找到 百度一下 按钮
并点击 百度一下 按钮
【整理】用Chrome或Chromium查看百度首页中各元素的html源码
然后用代码去定位了:
1 2 3 | BaiduSearchId = "su" baiduSearchButtonElem = chromeDriver.find_element_by_id(BaiduSearchId) print( "baiduSearchButtonElem=%s" % baiduSearchButtonElem) |
然后再去搞清楚,如何模拟点击按钮
直接去官网教程中找:
1 2 3 4 5 | element = driver.find_element_by_xpath( "//select[@name='name']" ) all_options = element.find_elements_by_tag_name( "option" ) print ( "Value is: %s" % option.get_attribute( "value" )) option.click() |
直接就是click了。
所以用第二套方法,找到按钮并点击:
代码:
1 2 3 4 5 6 | # Method 2: find button and click BaiduSearchId = "su" baiduSearchButtonElem = chromeDriver.find_element_by_id(BaiduSearchId) print ( "baiduSearchButtonElem=%s" % baiduSearchButtonElem) baiduSearchButtonElem.click() print ( "Clicked button %s" % baiduSearchButtonElem) |
效果是一样的:
【总结】
Selenium中,对于已经定位到的百度首页的搜索框,去输入文字,并触发搜索的代码是:
注:可以先清除(如果之前有输入过内容的话)输入框中值:
1 | searchButtonElem. clear () |
先输入要搜索的文字:
1 2 | searchStr = "crifan" searchButtonElem.send_keys(searchStr) |
再去触发搜索
此处由于页面支持直接回车搜索,所以可以用:
1 2 | # Method 1: emulate press Enter key searchButtonElem.send_keys(Keys.RETURN) |
去模拟回车键,触发搜索
也可以,按照常规办法,找到对应按钮:
1 2 | BaiduSearchId = "su" baiduSearchButtonElem = chromeDriver.find_element_by_id(BaiduSearchId) |
然后再去点击按钮去搜索:
1 | baiduSearchButtonElem.click() |
附上此段逻辑的完整代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | searchStr = "crifan" searchButtonElem.send_keys(searchStr) print ( "Entered %s to search box" % searchStr) # click button # Method 1: emulate press Enter key # searchButtonElem.send_keys(Keys.RETURN) # print("Pressed Enter/Return key") # Method 2: find button and click BaiduSearchId = "su" baiduSearchButtonElem = chromeDriver.find_element_by_id(BaiduSearchId) print ( "baiduSearchButtonElem=%s" % baiduSearchButtonElem) baiduSearchButtonElem.click() print ( "Clicked button %s" % baiduSearchButtonElem) |
即可。
转载请注明:在路上 » 【已解决】Selenium中给百度搜索框中输入文字并触发搜索