我已经尝试了一段时间并搜索了不同的论坛,但我找不到任何代码片段来执行此操作。
我有一个报告,其中需要通过在python中使用Selenium的下拉列表选择选项。下面是HTML结构
<div align="center"> Select Fruit</div>
<p align="center"><br>
<span id="0e6b87875e914a5f8d72bbee6844bea3" style="color: black; font-family: Arial; font-size: 13px; font-weight: normal; font-style: normal; width: 113px; display: inline-block;" class="sf-element sf-element-control sfc-property sfc-dropdown">
<div class="sf-element sf-element-dropdown" title="" style="position: relative; width: 100px;">
<div class="sf-element sf-element-icon" style="position: absolute; top: 1px; left: 91px; height: 17px; width: 17px;">
<svg width="17px" height="17px"><path d="M4,6 l7,0 l-3.5,3.5 z" fill="currentColor" stroke-width="1" transform="scale(1.1333333333333333,1.1333333333333333)" class="Down"></path></svg>
</div>
<div class="sf-element sf-element-text-box" style="display: inline-block; word-wrap: break-word; width: 83px;">(None)</div>
<select class="sf-dropdown-select" style="color: rgb(0, 0, 0); font-family: Arial; background-color: rgb(248, 248, 248);">
<option value="0" selected="selected">(None)</option>
<option value="1">Apple</option>
<option value="2">Mango</option>
<option value="3">Grapes</option>
</select>
</div>
</span><br></p>
我尝试过使用css选择器和XPath的不同方法,但似乎没有任何工作。以下是我试过的代码
driver.find_element_by_xpath('//*[@id="0e6b87875e914a5f8d72bbee6844bea3"]/div/select/option[@value = "Mango"]')
还有不同的变体,如options [2]和使用css选择器,但它总是给出NoSuchElementException。
有人可以就此分享一些见解吗?
由于
答案 0 :(得分:1)
添加text()=“Mongo”而不是@ value =“Mongo”
driver.find_element_by_xpath('//[@id="0e6b87875e914a5f8d72bbee6844bea3"]/div/select/option[text() = "Mango"]').click()
答案 1 :(得分:0)
在处理SELECT元素时,有一个帮助类Select
,这使得它更容易。
select = Select(driver.find_element_by_css_selector("#0e6b87875e914a5f8d72bbee6844bea3 select"))
select.select_by_visible_text("Mango")
答案 2 :(得分:0)
dropdown
显然位于 <Select>
标记内。因此,使用 Select
类会更方便,如下所示:
//import
from selenium.webdriver.support.ui import Select
//code block
selectOption = Select(driver.find_element_by_class_name("sf-dropdown-select"))
selectOption.select_by_visible_text("Mango")