我有这个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()
关键是我想用第二种方法选择,因为值一直在变化。
无法使用值,因为它总是会改变
答案 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")