下载Selenium和Python

时间:2014-07-07 13:17:23

标签: python selenium

我有下拉菜单,其来源如下:

<select name="issuer">
<option selected="selected" value="15">MBBTampereRootCA
</option><option value="66222">OMS_CA1
</option><option value="66225">OMS_CA2
</option><option value="71463">stefanSpiel
</option></select>

我需要选择“stefanSpiel”,请告诉我该怎么做?

我尝试了多种可能的选项,但没有成功。

我尝试过这些选项:

browser = webdriver.Firefox()
browser.find_element_by_css_selector("option.stefanSpiel")
browser.find_element_by_link_text('option.stefanSpiel');

以及这些:

'element = browser.find_element_by_name("issuer")'
'target = select (option, stefanSpiel)'
'action_chains = ActionChains(browser)'
'action_chains.drag_and_drop(element, target)'

'ActionChains(browser).move_to_element(element).click(target).perform()'

但我得到的只是:     'selenium.common.exceptions.NoSuchElementException:'

谢谢,

3 个答案:

答案 0 :(得分:1)

一种方法是点击“选择”按钮。元件。 这将打开&#39;下拉并下拉所有下拉列表 我们的驱动程序可见选项。 现在我们需要单击所需的元素。

例如,让我们来看看下面的html(它与你提供的html非常相似) 我从http://www.tizag.com/htmlT/htmlselect.php获取了它:

<select name="selectionField"> 
  <option value="CA">California -- CA </option>
  <option value="CO">Colorado -- CO</option>
  <option value="CN">Connecticut -- CN</option>
</select>

对于这个例子,我将使用xpaths。 假设我有&#39;选择&#39;的xpath。元素:

xpath = '/html/body/table[3]/tbody/tr[1]/td[2]/table/tbody/tr/td/div[4]/select'

我想选择&#34;康涅狄格州 - CN&#34;

这样做的一种方法是:

from selenium import webdriver

driver  = webdriver.Firefox()

# navigate to the page that contains the html I provided  
driver.get('http://www.tizag.com/htmlT/htmlselect.php')

# the xpath of the <select> elemnt
xpath = '/html/body/table[3]/tbody/tr[1]/td[2]/table/tbody/tr/td/div[4]/select'

# click on the <select> element to open the dropdown
driver.find_element_by_xpath(xpath).click()

# select the desired option
driver.find_element_by_xpath(xpath+'/*[contains(text(), "Connecticut -- CN")]').click()

答案 1 :(得分:0)

我建议您使用Select()类来处理select元素。

from selenium.webdriver.support.select import Select

select_element = Select(driver.find_element_by_name("issuer"))
select_element.select_by_visible_text("stefanSpiel")

答案 2 :(得分:0)

全部谢谢...尝试如下并且它有效...不确定它在多大程度上是好的:

element = browser.find_element_by_name("issuer")
element.send_keys('stefanSpiel' + Keys.RETURN)

再次感谢:)