Selenium處理select標(biāo)簽的下拉框
Selenium是一個開源的和便攜式的自動化軟件測試工具,用于測試Web應(yīng)用程序有能力在不同的瀏覽器和操作系統(tǒng)運行。Selenium真的不是一個單一的工具,而是一套工具,幫助測試者更有效地基于Web的應(yīng)用程序的自動化。
有時候我們會碰到<select></select>標(biāo)簽的下拉框。直接點擊下拉框中的選項不一定可行。Selenium專門提供了Select類來處理下拉框。
<select id="status" class="form-control valid" onchange="" name="status"> <option value=""></option> <option value="0">未審核</option> <option value="1">初審?fù)ㄟ^</option> <option value="2">復(fù)審?fù)ㄟ^</option> <option value="3">審核不通過</option> </select>
Python-selenium中的操作
先以python為例,查看Selenium代碼select.py文件的實現(xiàn):
...\selenium\webdriver\support\select.py
class Select:
def __init__(self, webelement): """ Constructor. A check is made that the given element is, indeed, a SELECT tag. If it is not, then an UnexpectedTagNameException is thrown. :Args: - webelement - element SELECT element to wrap Example: from selenium.webdriver.support.ui import Select \n Select(driver.find_element_by_tag_name("select")).select_by_index(2) """ if webelement.tag_name.lower() != "select": raise UnexpectedTagNameException( "Select only works on <select> elements, not on <%s>" % webelement.tag_name) self._el = webelement multi = self._el.get_attribute("multiple") self.is_multiple = multi and multi != "false"
查看Select類的實現(xiàn)需要一個元素的定位。并且Example中給了例句。
Select(driver.find_element_by_tag_name("select")).select_by_index(2) def select_by_index(self, index): """Select the option at the given index. This is done by examing the "index" attribute of an element, and not merely by counting. :Args: - index - The option at this index will be selected """ match = str(index) matched = False for opt in self.options: if opt.get_attribute("index") == match: self._setSelected(opt) if not self.is_multiple: return matched = True if not matched: raise NoSuchElementException("Could not locate element with index %d" % index)
繼續(xù)查看select_by_index() 方法的使用并符合上面的給出的下拉框的要求,因為它要求下拉框的選項必須要有index屬性,例如index=”1”。
def select_by_value(self, value): """Select all options that have a value matching the argument. That is, when given "foo" this would select an option like: <option value="foo">Bar</option> :Args: - value - The value to match against """ css = "option[value =%s]" % self._escapeString(value) opts = self._el.find_elements(By.CSS_SELECTOR, css) matched = False for opt in opts: self._setSelected(opt) if not self.is_multiple: return matched = True if not matched: raise NoSuchElementException("Cannot locate option with value: %s" % value)
繼續(xù)查看select_by_value() 方法符合我們的要求,它用于選取<option>標(biāo)簽的value值。最終,可以通過下面有實現(xiàn)選擇下拉框的選項。
from selenium.webdriver.support.select import Select
……
sel = driver.find_element_by_xpath("http://select[@id='status']")
Select(sel).select_by_value('0') #未審核
Select(sel).select_by_value('1') #初審?fù)ㄟ^
Select(sel).select_by_value('2') #復(fù)審?fù)ㄟ^
Select(sel).select_by_value('3') #審核不通過
Java-selenium中的操作
當(dāng)然,在java中的用法也類似,唯一不區(qū)別在語法層面有。
package com.jase.base;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.By.ById;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.Select;
public class SelectTest {
public static void main(String[] args){
WebDriver driver = new ChromeDriver();
driver.get("http://www.you_url.com");
// ……
Select sel = new Select(driver.findElement(ById.xpath("http://select[@id='status']")));
sel.selectByValue("0"); //未審核
sel.selectByValue("1"); //初審?fù)ㄟ^
sel.selectByValue("2"); //復(fù)審?fù)ㄟ^
sel.selectByValue("3"); //審核不通過
}
}
相關(guān)文章
springboot jpa分庫分表項目實現(xiàn)過程詳解
這篇文章主要介紹了springboot jpa分庫分表項目實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-01-01JVM的垃圾回收機(jī)制詳解和調(diào)優(yōu)
JVM的垃圾回收機(jī)制詳解和調(diào)優(yōu)...2006-12-12shiro實現(xiàn)單點登錄(一個用戶同一時刻只能在一個地方登錄)
這篇文章主要介紹了shiro實現(xiàn)單點登錄(一個用戶同一時刻只能在一個地方登錄)的相關(guān)資料,非常不錯,具有參考借鑒價值,感興趣的朋友一起學(xué)習(xí)吧2016-08-08java中加密的實現(xiàn)方法(MD5,MD2,SHA)
這篇文章主要介紹了java中加密的實現(xiàn)方法(MD5,MD2,SHA)的相關(guān)資料,這里提供三種實現(xiàn)加密的方法,大家可以對比一下,需要的朋友可以參考下2017-08-08