第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何使用 Selenium 監(jiān)控網(wǎng)頁并知道何時(shí)出現(xiàn)新的 html 元素?

如何使用 Selenium 監(jiān)控網(wǎng)頁并知道何時(shí)出現(xiàn)新的 html 元素?

慕尼黑8549860 2022-06-23 16:44:59
我有一個(gè)網(wǎng)頁,有時(shí)會(huì)動(dòng)態(tài)添加新元素,例如:<span class="chat_message">| New Login</span>將上述代碼添加到我的頁面時(shí)如何捕獲?我的代碼試驗(yàn):WebDriver driver = new ChromeDriver () ; driver.get("http://www.example.com") ;// code to monitor the new span
查看完整描述

3 回答

?
嗶嗶one

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊

請(qǐng)使用下面的代碼片段。如果沒有找到匹配的元素而不是異常,findElements 將返回一個(gè)空列表,但是我已經(jīng)完成了異常處理。


import java.awt.AWTException;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

import org.testng.annotations.Test;


public class Testing {

       public static WebDriver driver;


       @Test

       public void test() throws InterruptedException, AWTException {

              WebDriver driver = new ChromeDriver();

              driver.get("http://www.example.com");

              Boolean isPresent = driver.findElements(By.xpath("//span[@class='chat_message']")).size() > 0;

              try {

                     if (isPresent == true) {

                            System.out.println("New Login is added to my page");

                     } else {

                            System.out.println("New Login is not added to my page");

                     }

              } catch (Exception e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

       }

}

如果至少找到一個(gè)元素,則返回 true,如果不存在則返回 false。

如果它符合您的期望,請(qǐng)接受答案并進(jìn)行投票。提前致謝。


查看完整回答
反對(duì) 回復(fù) 2022-06-23
?
largeQ

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊

當(dāng)您提到您需要捕獲元素時(shí),用例歸結(jié)為使用ExpectedConditions誘導(dǎo)WebDriverWait,以便您可以提取任何元素屬性:visibilityOfElementLocated(By locator)


內(nèi)部HTML

類屬性

外層HTML

在這些情況下,最好的選擇是創(chuàng)建如下函數(shù):


public void getElementAttribute()

{

    try {

      System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[@class='chat_message']"))).getAttribute("innerHTML"));

    }

    catch(Exception TimeoutException) {

      System.out.println("Element no found");

    }

}

現(xiàn)在,您可以從程序中的任何位置調(diào)用此函數(shù)來檢查元素的可見性,如下所示:


getElementAttribute();

筆記:


由于元素是動(dòng)態(tài)元素,您需要誘導(dǎo)WebDriverWait。

由于您需要捕獲元素visibilityOfElementLocated非常適合。

有時(shí)您需要將代碼行包裝在一個(gè)try-catch {}塊中,并在出現(xiàn)異常的情況下優(yōu)雅地處理并TimeoutException繼續(xù)您的下一步。


查看完整回答
反對(duì) 回復(fù) 2022-06-23
?
喵喵時(shí)光機(jī)

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊

如果您知道該元素的定位器 - 有一個(gè)“while”循環(huán),其中包含 afindElement()并捕獲NoSuchElementException. 如果該元素不存在,您將捕獲異常,暫停一段時(shí)間(盡管如此sleep),然后開始一個(gè)新的循環(huán)周期。如果沒有拋出異常,則元素存在;將您的 while 控制變量更改為true,然后繼續(xù)。

我建議有一個(gè)計(jì)數(shù)器循環(huán)運(yùn)行了多少次,如果它達(dá)到某個(gè)閾值 - 打破它,出現(xiàn)錯(cuò)誤/異常 - 這樣你就不會(huì)陷入無限循環(huán)。

恭喜 - 您剛剛WebDriverWait使用presenceOfElementLocated()ExpectedConditions 實(shí)施。您可以使用它(香草硒版本),或堅(jiān)持使用本土解決方案,這將為您提供更精細(xì)的控制和決策樹 - 但需要更多編碼。


如果你沒有具體的元素,只是想看看頁面本身什么時(shí)候發(fā)生變化,算法是一樣的,但是:在開始循環(huán)之前,先獲取頁面源。在它的體內(nèi),再次得到它;如果兩者不同,那就是你的突破條件。
這種方法雖然會(huì)受到頁面中最輕微的變化的影響。


查看完整回答
反對(duì) 回復(fù) 2022-06-23
  • 3 回答
  • 0 關(guān)注
  • 677 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)