2013-04-17 42 views
1

我想單擊使用硒和python的單選按鈕。如何使用硒選擇單選按鈕

<input type="radio" name="tweet_target_1" value="website" class="tweet-website-button radio-selection-validate serialize-me newline-before field-order-15"> 

website = driver.find_element(name="tweet_target_1") 
website.click() 

,但它不是讓我點擊它。我怎樣才能點擊使用組合的名稱,價值或類,價值等?

有沒有關於如何使用硒的信息的很好的來源?因爲我發現的大部分是在java上,而我正在使用python。

編輯:使用XPATH

我試圖

website = driver.find_elements(By.XPATH, "//form[@id='dmca_form' and @class='twitter-form custom-form']/div[20][@class='list-container']/div[1][@class='list-item']/div[7][@class='clearfix inf-tweet init-hide']/div[@class='input']/ul[@class='options']/li[2]/label/input[@class='tweet-website-button radio-selection-validate serialize-me newline-before field-order-15']/") 
website.click() 

我不斷收到

AttributeError: 'list' object has no attribute 'click'

回答

1

我不知道你在哪裏發現,說你可以調用文檔find_element就是這樣,但你應該做driver.find_element_by_name("tweet_target_1")driver.find_element(By.NAME, "tweet_target_1")(當然有第一個進口By)。另外,Selenium Java代碼很容易轉換爲Python代碼;它遵循一些非常簡單的轉換規則,如果您仍然有問題,庫本身的所有代碼也將在您的機器上查看。

+0

也許我正在使用不同版本的硒,但它不適用於我我一直得到'website = driver.find_element(By.NAME,「tweet_target_1」) NameError:name'By'is not defined'。此外,我需要能夠通過BOTH名稱/ ID和值找到一個元素。 –

+1

您是否從selenium.webdriver.common.by首先導入By?是的,這就是爲什麼有'find_element_by_name'和'find_element_by_id',以及'By.NAME'和'By.ID'。 'By.ID'實際上也是'find_element'的默認值... –

+0

好的你是對的。但是沒有價值選擇嗎?正如你可以看到上面是一個單選按鈕,只有名稱和值。我不能選擇名稱,因爲有多個選項,我不能上課,因爲它顯示了其他地方。是不是按名稱選擇然後按值單擊的選項? –

2

我知道這可能有點太晚了,但我剛剛加入。

提示:使用,Firebug和Firepath。找到單選按鈕並找出相關元素的xpath。

website = driver.find_element_by_xpath(".//**") 
website.click() 

OR

website = driver.find_element_by_xpath(".//**").click() 

這應該工作的所有嘗試的時間。此外,只使用from selenium import webdriver 應使click()函數正常工作。

+0

Hi @grizzlyBearGrouser,您可能想要格式化代碼示例,代碼塊縮進四個空格,以及使用反引號代碼(例如'code')的一個小提示 – robjohncox

+0

@robjohncox:嗨,感謝您的提示。請記住從這裏開始。 – grizzlyBearGrouser