30 selenium (元素定位、webelement對象)


2020-07-07 

目錄

一、HTML屬性

二、Javascript在網頁中的角色

三、JS語法

四、DOM對象

 

正文

一、HTML屬性

1.HTML中比較重要的屬性:   name、value、href、src、id、class、disabled、readonly

① id:重要!!!id是唯一的

----在同一個頁面中:id是唯一的

----在不同的頁面中,id是可以重復的

 

②class:幾乎每個標簽都有class屬性,使用最頻繁的屬性

-----在定位元素時,就極大可能使用class進行元素定位(標簽里有class,就可以進行定位)

③disabled(不能進行元素定位),將元素置灰,無法傳遞數據的

比如下面input密碼輸入框,disabled后,就無法對輸入框進行操作了(置灰顯示)

disabled 可以將True省略,下面兩種用法一樣。

<input name = "username" type="password" placeholder="請輸入密碼" disabled>
<input name = "username" type="password" placeholder="請輸入密碼" disabled="True">

④readonly 只讀

input輸入框,只能讀,不能輸入數據

<input name = "username" type="password" placeholder="請輸入密碼" readonly>

♥當定位某些輸入框的時候,發現某個元素不能讀寫時,檢查源代碼,是否有disabled、readonly這兩個屬性,有的話,可以修改為可以讀寫的。

實戰操作:

先通過F12,定位到disabled的input框

 

 再在console中,用JavaScript修改disabled=false,讓input框可以輸入數據

 

二、Javascript在網頁中的角色

1.一個網頁的需要以下3種語言

HTML:負責顯示靜態頁面,超文本標記語言

CSS:進行排版、美化

JavaScript:動態展示、特效、交互,編程語言

2.用JS的原理

webdriver通過一個js bot將python或者Java的請求轉化給瀏覽器能夠識別的js語言,才能夠驅動瀏覽器。

那么,為什么只有js才能操作瀏覽器?-----目前所有的瀏覽器都只內置JS的解釋器

 

三、JS語法

1.如何在HTML種寫JS

在body種增加<script></script>標簽,在標簽內就可以寫JS的代碼了

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>study JS</title>
</head>
<body>
    <p>hello world</p>
    <script>
        //輸出控制台信息,類似於python的print("hello world")
        console.log("hello world");
        //let a = 5;也可以表示變量
        var a = 5;
        console.log(a);
    </script>

</body>
</html>

頁面console輸出結果:

 

 2.js函數的定義和調用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>study JS</title>
</head>
<body>
    <p>hello world</p>
    <script>
        //輸出控制台信息,類似於python的print("hello world")
        console.log("hello world");
        //let a = 5;也可以表示變量
        var a = 5;
        console.log(a);

        //函數的定義和調用
        function add(a) {
            if(a > 10){
                console.log("大於10");
            }
            else if(a == 10) {
                console.log("等於10");
            }
            else {
                console.log("小於10");
            }
        }
        add(11);
    </script>

</body>
</html>

頁面console顯示:

 

 

四、DOM對象----- Document Object Model

 1.什么是dom對象---js通過dom對象,實現對瀏覽器中的HTML的控制

   只要能把一個文檔轉變為一個對象,都可以叫做dom對象-----本質

 

 

2.頁面對象document-------整個頁面都放在document這個對象里面

JS中,整個一個頁面對象,就是一個document

在console中查看document對象,輸出的源碼,就是網頁的源碼

 

 

2.DOM樹  --------對文檔的結構化表述

①什么是dom樹

 

 

 2.節點   -----dom對象中,一切皆節點

HTML中的所有的內容都是節點---可以將節點看成樹枝,一個節點就是一個樹枝

寫東西在HTML中,稱為元素

♥整個文檔就是一個文檔節點

♥<html>是根節點

♥每個HTML元素就是元素節點

♥HTML元素內的文本就是文本節點

♥每個HTML屬性就是屬性節點

舉例:<a href://www.baidu.com>"text=這里是個文本"</a>  ======>  <a>是元素節點; href就是屬性節點; text就是文本節點

 面試題:dom對象中有哪些節點?

 

3.dom對象進行元素定位

①document對象調用方法,進行元素定位

 getElementById ---單數,id唯一性

 getElementsByName---復數,可以重復出現(除了id,其他的任何元素都是可以重復的)

舉例:定位查看input的id是看kw,用id去定位

e = document.getElementById("kw");

 

 

②輸入或者修改內容----.value

e.value

 

 上面例子中的value值只有一個,存在列表中,用索引e[0]查看,跟e = document.getElementById("kw")的結果是一樣的.

 

對e[0]的value值賦值,input框直接顯示value值

 

 同樣可以對input輸入框進行其他屬性的修改

①背景顏色:

>e[0].style.backgroundColor = "yellow";
< "yellow"

②修改整個網頁為子網頁

document.body.innerHTML= "<h1>python</h1>";
"<h1>python</h1>"

整個網頁都被改為一個只有標題的網頁了.

注意:修改網頁顯示,只是暫時修改,刷新后,就沒了.

 

4.window操作

window作為全局變量,代表了腳本正在運行的窗口,暴露給javascript代碼。

--window.location

--window.href

--window.name

--window.alert("hello")  表示彈框

--windoe.scrollTo()

例如:

 

 

5.DOM事件監聽

①什么是事件?

網頁上,點擊、光標懸浮等出現的動畫等效果,都叫做事件

②事件監聽

on....的都是事件(一種動作),不是屬性了

onclick = "red_element"(this)   this表示這個元素自己(可以類似self)理解

舉例:點擊頁面中的python autotest文本,變成紅色;光標懸浮在文本上,顯示綠色。

<html>
<head>
</head>

<body>
    <p onclick = "red_element(this)"  onmouseover = "green_element(this)"  onmouseout = "black_element(this)"> 
          python autotest
</p>

<script>
function red_element(elem){
elem.style.color
= "red";
};
function green_element(elem) {
elem.style.color
= "green";
};
       function black_element(elem) {
                elem.style.color = "black";
           };
</script>

</body>
</html>

 

6.selenium原理-----面試題

python發送定位元素的操作
面試:python發送定位元素的操作,它經歷了什么?---selenium的原理
python 封裝的函數發送的指令是發送給webdriver服務器,webdriver服務器接收到請求以后,解析傳過來的數據,然后執行對應的JS命令(最終得到的效果,是通過JS去執行的。)
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM