最近又开始研究selenium自动化测试,非常惊喜的这个项目自动化脚本执行很顺利,一高兴就多写了一点,问题又出来了,下拉框的选项选择不了。正常情况应该下应该是这样:
左侧是一个简单的下拉框,右侧是F12抓出来的元素,这种实现比较简单,两种实现方式。
#获取下拉框内所有元素 options=browser.find_elements_by_tag_name("option") #点击下拉框控件 browser.find_element_by_tag_name("select").click() #选择下拉菜单第一个:Volvo options[0].click()使用了一个索引,如果选择下拉菜单第二个,把中括号里的0换成1即可,以此类推。还有一只实现方法:
#导包 from selenium.webdriver.support.ui import Select
options=Select(browser.find_element_by_tag_name("select")) #用value选择元素 options.select_by_value("Volvo") #用索引选择元素 options.deselect_by_index(0)
这个用了两种方法选择元素,需要导个包,这个只是在解决我的问题时候得到的一种方法,但是不能解决我的问题,下面来看看我遇到的这个问题:
这个下拉框里只有一个中国,但是仔细看一下F12抓出来的元素,这好像不是下拉框,完全没有中国这个选项啊。思维定势也在作怪,习惯了鼠标点击,键盘输入的操作,忘了键盘还有其它功能,这里就可以用键盘的回车操作。代码大概如下(写好的代码没在手头):
#导入Keys包 from selenium.webdriver.common.keys import Keys
#点击所属国家控件,弹出下拉菜单 browser.find_element_by_class_name("ant-select-selection__placeholder").click() #在所属国家只上按回车 browser.find_element_by_class_name("ant-select-selection__placeholder").send_keys(Keys.ENTER)
我这项目直接点回车就可以选中国了,实际用键盘操作一下就能确认,如果下拉菜单很多,还会用到向下键,下面展示一些经常用到的键盘操作:
send_keys(Keys.BACK_SPACE) 删除键(BackSpace)
send_keys(Keys.SPACE) 空格键(Space)
send_keys(Keys.TAB) 制表键(Tab)
send_keys(Keys.ESCAPE) 回退键(Esc)
send_keys(Keys.ENTER) 回车键(Enter)
send_keys(Keys.DOWN) 向下键(↓)(向下好像是这样,懒得找了)
send_keys(Keys.CONTROL,'a') 全选(Ctrl+A)
send_keys(Keys.CONTROL,'c') 复制(Ctrl+C)
send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X)
send_keys(Keys.CONTROL,'v') 粘贴(Ctrl+V)