遇到的selenium下拉框无法操作解决方法-键盘操作事件

最近又开始研究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)

猜你喜欢

转载自blog.csdn.net/zhu940923/article/details/78334947