Elt*_*ooo 7 python selenium web2py
我有一个包含输入和下拉列表的表单:
[...]
<select>
<option></option>
<option>Test User 1</option>
<option>Test User 2</option>
</select>
[...]
Run Code Online (Sandbox Code Playgroud)
我将值传递给Selenium作为字典:
dict = {'user':'Test User 1', [...]}
Run Code Online (Sandbox Code Playgroud)
我使用for循环来执行此操作:
for key in dict.keys():
inputElement = driver.find_element_by_name(key)
inputElement.clear()
inputElement.send_keys(dict[key])
Run Code Online (Sandbox Code Playgroud)
它适用于所有输入,但使用下拉菜单不起作用.但是当我没有循环的情况下它可以工作.例如:
inputElement = driver.find_element_by_name('user')
inputElement.clear()
inputElement.send_keys(dict['user'])
Run Code Online (Sandbox Code Playgroud)
要么
inputElement = driver.find_element_by_name('user')
inputElement.clear()
inputElement.send_keys('Test User 1')
Run Code Online (Sandbox Code Playgroud)
jfs*_*jfs 13
from selenium.webdriver.support.ui import Select
select = Select(driver.find_element_by_id("dropdown_menu"))
select.select_by_visible_text("Test User 1")
Run Code Online (Sandbox Code Playgroud)
如果clear()是问题所在...则执行以下操作:
from selenium import webdriver
from selenium.webdriver.support.ui import Select
driver = webdriver.Firefox()
dict = {'user': 'Test User 1', 'user': 'Test User 2'}
for key in dict.keys():
inputElement = driver.find_element_by_name(key)
if inputElement.tag_name == 'input':
inputElement.clear()
inputElement.send_keys(dict[key])
elif inputElement.tag_name == 'select':
# now use the suggestion by J.F. Sebastian
select_obj = Select(inputElement)
select_obj.select_by_visible_text(dict[key])
Run Code Online (Sandbox Code Playgroud)
这适用于 FF,并且很可能也适用于 Chrome,但尚未测试。
| 归档时间: |
|
| 查看次数: |
9514 次 |
| 最近记录: |