硒从Dropdown Python中选择



我在python中使用硒,我想从下面选择选项Male:

<div class="formelementcontent">
<select aria-disabled="false" class="Width150" id="ctl00_Gender" name="ctl00$Gender" onchange="javascript: return doSearch();" style="display: none;">
<option selected="selected" title="" value="">
</option>
<option title="Male" value="MALE">
Male
</option>
<option title="Female" value="FEM">
Female
</option>
</select>

在从下拉列表中选择之前,我需要切换到iframe

driver.switch_to.frame(iframe)

我尝试了很多选择,并进行了广泛的搜索。这让我很头疼。

driver.find_element_by_id("ctl00_Gender-button").click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "ctl00_Gender")))
select=Select(driver.find_element_by_id("ctl00_Gender"))
check=select.select_by_visible_text('Male')

如果我使用WebDriverWait,它会超时。

我试着通过可见文本和索引进行选择,两者都给出:

ElementNotInteractiableException:元素无法滚动到视图中

根据您共享的HTML,<select>标记的样式属性值设置为display: none;。因此,使用Selenium将很难与此WebElement进行交互。

如果您通过googlechrome-devtools访问网页的DOM树,那么您可能会在<ul>节点中找到几个相当于<option>节点的<li>节点。您可能需要与这些人互动。

你可以在中找到一些相关的详细讨论

  • 使用selenium python选择剑道下拉菜单
  • 如何使用Selenium和Python通过爬网程序测试非标准下拉列表
  • 如何从非选择标签的下拉列表中选择一个选项

尝试以下解决方案:

解决方案1:

select = Select(driver.find_element_by_id('ctl00_Gender'))
select.select_by_value('MALE')

注意将以下导入添加到您的解决方案中:

from selenium.webdriver.support.ui import Select

解决方案2:

driver.find_element_by_xpath("//select[@id='ctl00_Gender']/option[text()='Male']").click()

最新更新