选择嵌套窗体



我知道如何进行选择,但嵌套选择选项呢?

我通常这样做:

form = driver.find_element(By.XPATH, '/html/body/div[3]/div[3]/div/div/div/div[3]/div/div/div[3]/div/form/fieldset/div/div/span[1]/select')
Select(form).select_by_value('gmx.org')

form是正确的,因为我可以在上面使用.click()。但是选择tho呢?我想选择gmx.org。谢谢!:(

<select name="fieldSet:fieldSet_body:grid:addressSelection:domainSelection" class="form-element form-element-select">
<optgroup label="FreeMail">
<option value="option98">gmx.de</option>
<option value="option99">gmx.net</option>
<option value="option100">mein.gmx</option>
</optgroup>
<optgroup label="ProMail">
<option value="option101">email.gmx</option>
<option value="option102">gmx.biz</option>
<option value="option103">gmx.com</option>
<option value="option104">gmx.eu</option>
<option value="option105">gmx.info</option>
# I want to select this
<option value="option106">gmx.org</option>
<option value="option107">mail.gmx</option>
</optgroup>
...

此选项具有值option106和(可见(文本gmx.org

Select(form).select_by_value('option106')
Select(form).select_by_visible_text('gmx.org')

编辑:

最小工作示例

html = '''
<select>
<optgroup label="FreeMail">
<option value="option98">gmx.de</option>
<option value="option99">gmx.net</option>
<option value="option100">mein.gmx</option>
</optgroup>
<optgroup label="ProMail">
<option value="option101">email.gmx</option>
<option value="option102">gmx.biz</option>
<option value="option103">gmx.com</option>
<option value="option104">gmx.eu</option>
<option value="option105">gmx.info</option>
<option value="option106">gmx.org</option>
<option value="option107">mail.gmx</option>
</optgroup>
</select>
'''
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
#from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.firefox import GeckoDriverManager
import time
#driver = webdriver.Chrome(executable_path=ChromeDriverManager().install())
driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
driver.get("data:text/html;charset=utf-8," + html)
time.sleep(2)
form = driver.find_element(By.XPATH, '//select')
s = Select(form)
print('--- option106 ---')
s.select_by_value('option106')
print('value:', s.first_selected_option.get_attribute('value'))
print('text :', s.first_selected_option.text)
print('--- gmx.org ---')
s.select_by_visible_text('gmx.org')
print('value:', s.first_selected_option.get_attribute('value'))
print('text :', s.first_selected_option.text)

最新更新