从Selenium PYTHON中的span下拉选择一个值

时间:2017-10-03 21:34:49

标签: python html selenium xpath selenium-chromedriver

我已经尝试了一段时间并搜索了不同的论坛,但我找不到任何代码片段来执行此操作。

我有一个报告,其中需要通过在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。

有人可以就此分享一些见解吗?

由于

3 个答案:

答案 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")