Selenium 下拉框、勾選框的一些操作

3.5.2 選擇框進行選擇

  • 單選框
    單選框(Radio Button)像這樣:
    image.png

要對選擇框進行選擇,直接用WebElementclick方法,模擬用戶點擊就可以了。而且不管原來該元素是否選中,直接去點擊該元素就沒有問題,都可以確保該單選框選中。下面面的HTML頁面。


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
</head>

<body>

<p>測試單選</p>
<div>
    <input type="radio" name="gender" value="male"> 男<br>
    <input type="radio" name="gender" value="female"> 女<br>
    <input type="radio" name="gender" value="other" checked="checked"> 其他
</div>

</body>
</html>

要確保性別“男”的選項被選中,代碼可以這樣寫:

from datetime import time

import time

from selenium import webdriver

driver = webdriver.Chrome('E:\ChromDriver\chromedriver.exe')

driver.get(r'E:\case\Selenium\代碼\samples_selenium\wd\lesson04\rb.html')

driver.implicitly_wait(10)

#css
input1 = driver.find_element_by_css_selector("input[value=male]")
#XPath
# input1 = driver.find_element_by_xpath("http://input[@value='male']")

input1.click()

time.sleep(5)

driver.quit()

這里就選擇了,注意radio是單選框

  • 勾選框
    勾選框(Check Box)像這樣
    image.png

要對勾選框進行選擇,直接用WebElementclick方法,模擬用戶點擊就可以了。要注意一個問題是,對應單選框,不管原來該元素是否選中,直接去點擊該元素沒有問題,都可以確保單選框選中。而對于勾選框,我們必須先獲取當前該選擇框的狀態(tài),如果是已經(jīng)點選的,我們的代碼里就不能再點擊,否則點擊已選中的勾選框,反而會取消選擇。下面的HTML頁面,‘我有一輛汽車’的選項已經(jīng)被選了。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
</head>

<body>
<p>測試勾選</p>
<div>
    <input type="checkbox" name="vehicle" value="bike" >
    我有一輛自行車
    <br>
    <input type="checkbox" name="vehicle" value="car" checked>
    我有一輛汽車
</div>
</body>
</html>

Selenium通過 WebElementis_selected 方法來獲取 選擇框是否選中的狀態(tài)。要確?!矣幸惠v汽車’的選項被選中,代碼可以這樣寫:

from selenium import webdriver

driver = webdriver.Chrome('E:\ChromDriver\chromedriver.exe')

driver.get(r'E:\case\Selenium\代碼\samples_selenium\wd\lesson04\cb.html')

input1 = driver.find_element_by_css_selector('input[value=car]')

selected = input1.is_selected()

if selected:
    print('car already selected')
else:
    print('car not selected,click on it')
    input1.click()

input('press any key to quit...')
driver.quit()

這樣,先判斷,如果選中,不能點擊該勾選框。

  • 復選框
    復選框(select)可以是多選的,像這樣:
    image.png

也可以是單選的,像這樣:


image.png

下面是 html 頁面:


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>定位網(wǎng)頁元素</title>
</head>

<body>

<p>選擇您喜愛的車</p>
<select id="multi" multiple>
    <option value="benz">奔馳S300</option>
    <option value="accord">雅閣</option>
    <option value="bmw" selected="selected">寶馬 740</option>
    <option value="audi">奧迪A6</option>
</select>

<hr>

<p>選擇性別</p>
<select  id="single">
    <option value="male">男</option>
    <option value="female" selected="selected">女</option>
</select>


</body>
</html>

其中,選車的選項是多選(注意<select>里面的 multiple 屬性),選性別是單選,如果我們想選中寶馬和雅閣兩種車,性別男,該怎么做呢?特別要注意的是,多選框里面已經(jīng)有寶馬選項,已經(jīng)處于選中狀態(tài)了。Selenium 為我們提供了一個方便的 Select 類。其中有個方法 deselect_all 用來清除原來的選擇,然后通過方法 select_by_visible_text, 根據(jù)選項的內(nèi)容進行選擇,而不是我們發(fā)出點擊事件去選擇。下面是示例代碼:

from selenium import webdriver

driver = webdriver.Chrome('E:\ChromDriver\chromedriver.exe')

driver.get(r'E:\case\Selenium\代碼\samples_selenium\wd\lesson04\ms.html')

#導入select類
from selenium.webdriver.support.ui import Select
#獲取相應的webElement
select = Select(driver.find_element_by_id("multi"))
#先去選擇所有的選項
select.deselect_all()
select.select_by_visible_text("雅閣")
select.select_by_visible_text("寶馬 740")

#獲得相應的webElement
select = Select(driver.find_element_by_id("single"))
select.select_by_visible_text("男")

input("press any key to quit...")
driver.quit()

只有遇到 select 標簽名的才能用 select 類.

3.5.3 編輯框的一些操作

clear 方法清除該元素里面字符串:

input1.clear()

獲取 input() 元素里面輸入的文本內(nèi)容:

input1.get_attribute('value')

3.5.4 點擊按鈕、鏈接

按鈕、鏈接的點擊都非常簡單,找到該元素,直接調(diào)用其 click 方法就可以了。比如:

driver.find_element_by_id('123').click()

下面是 html 頁面:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>定位網(wǎng)頁元素</title>

</head>

<body>

    <p>測試輸入</p>
    <div style="color:#0000FF">
        <input id="input1" value="sdfsdf">
        <br><br>
        <textarea id="ta1"></textarea>
    </div>

    <button name='button'>按鈕1</button>
    <button name='button'>按鈕2</button>



</body>
</html>

示例代碼:

from selenium import webdriver

driver = webdriver.Chrome('E:\ChromDriver\chromedriver.exe')

driver.get(r'E:\case\Selenium\代碼\samples_selenium\wd\lesson04\input1.html')

driver.implicitly_wait(10)

input1 = driver.find_element_by_id('input1')
input1.clear()

input1.send_keys('軟件測試')
print(input1.get_attribute('value'))

input("press any key to quit...")
driver.quit()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容