3.5.2 選擇框進(jìn)行選擇
-
單選框
單選框(Radio Button)像這樣:
image.png
要對選擇框進(jìn)行選擇党瓮,直接用WebElement的click方法浑侥,模擬用戶點擊就可以了姊舵。而且不管原來該元素是否選中,直接去點擊該元素就沒有問題寓落,都可以確保該單選框選中括丁。下面面的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
要對勾選框進(jìn)行選擇,直接用WebElement的click方法仰税,模擬用戶點擊就可以了构资。要注意一個問題是,對應(yīng)單選框肖卧,不管原來該元素是否選中蚯窥,直接去點擊該元素沒有問題掸鹅,都可以確保單選框選中塞帐。而對于勾選框,我們必須先獲取當(dāng)前該選擇框的狀態(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通過 WebElement 的 is_selected 方法來獲取 選擇框是否選中的狀態(tài)削咆。要確保‘我有一輛汽車’的選項被選中蠢笋,代碼可以這樣寫:
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()
這樣拨齐,先判斷,如果選中昨寞,不能點擊該勾選框瞻惋。
-
復(fù)選框
復(fù)選框(select)可以是多選的厦滤,像這樣:
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)容進(jìn)行選擇玫霎,而不是我們發(fā)出點擊事件去選擇凿滤。下面是示例代碼:
from selenium import webdriver
driver = webdriver.Chrome('E:\ChromDriver\chromedriver.exe')
driver.get(r'E:\case\Selenium\代碼\samples_selenium\wd\lesson04\ms.html')
#導(dǎo)入select類
from selenium.webdriver.support.ui import Select
#獲取相應(yīng)的webElement
select = Select(driver.find_element_by_id("multi"))
#先去選擇所有的選項
select.deselect_all()
select.select_by_visible_text("雅閣")
select.select_by_visible_text("寶馬 740")
#獲得相應(yīng)的webElement
select = Select(driver.find_element_by_id("single"))
select.select_by_visible_text("男")
input("press any key to quit...")
driver.quit()
只有遇到 select 標(biāo)簽名的才能用 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()