无法选择一个选项

时间:2015-10-22 15:37:56

标签: python firefox selenium css-selectors webdriver

我有这个HTML代码

<select id="stuff" name="stuff_name">
<option value="10002">Team_01</option>
<option value="10001">Team_02</option>
<option value="10000">Team_03</option>
<option value="0">[default]</option></select>

我正在尝试使用python中的selenium中的css_selector来选择“Team_02”。 为什么会这样:element = driver.find_element_by_css_selector('#stuff > option:nth-child(2)') 这不是:element = driver.find_element_by_css_selector('#stuff > option[value="Team_02"').click() 关键是我想用第二种方法选择,因为值一直在变化。

重要的:

无法使用值,因为它总是会改变

3 个答案:

答案 0 :(得分:3)

从你的问题我明白你想要使用CSS(因为你也可以使用Xpath或Selenium的Select-class)

&#xA;&#xA;

使用CSS你可以通过搜索value-attribute,但是你需要询问value-number

&#xA;&#xA;
  driver.find_element_by_css_selector('#stuff&gt;选项[value =“10001” ]')。点击()&#xA;  
&#xA;&#xA;

或者您通过文字搜索:

&#xA;&#xA; < pre> driver.find_element_by_css_selector('#stuff&gt; option [text =“Team_02”]')。click()&#xA; &#xA;&#xA;

另一种方式是innertext

&#xA;&#xA;
  driver.find_element_by_css_selector('#stuff&gt;选项[innertext =“Team_02”]')。click()&# XA;  
&#XA;

答案 1 :(得分:1)

尝试使用xpath。

driver.find_element_by_xpath("//select[@id='stuff']/option[contains(text(),'Team_02')").click()

或者你可以尝试蛮力。

for option1 in driver.find_elements_by_xpath("//select[@id='stuff']/option"):
    if option1.text == 'Team_02':
        option1.click()
        time.sleep(100)

答案 2 :(得分:0)

我建议使用selenium.webdriver.support.ui.Select,如下所示。

select = Select(driver.find_element_by_id("stuff"))
select.select_by_visible_text("Team_02")