国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java selenium 通過直接設(shè)置表單元素的 value 屬性來填寫 Vue / React 表單

這篇具有很好參考價值的文章主要介紹了Java selenium 通過直接設(shè)置表單元素的 value 屬性來填寫 Vue / React 表單。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Vue 表單

以下是一個通過直接設(shè)置表單元素的 value 屬性來填寫 Vue 表單并提交的示例代碼。

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class FillVueForm {

    public static void main(String[] args) {
        // 設(shè)置 Chrome 瀏覽器驅(qū)動路徑
        System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");

        // 創(chuàng)建 Chrome 瀏覽器實例
        WebDriver driver = new ChromeDriver();

        // 打開 Vue 表單頁面
        driver.get("http://example.com/vue/form");

        // 直接設(shè)置表單元素的 value 屬性
        WebElement nameInput = driver.findElement(By.name("name"));
        nameInput.sendKeys("");
        nameInput.clear(); // 清空輸入框內(nèi)容,確保下面的設(shè)置生效
        nameInput.sendKeys("John Doe");
        ((JavascriptExecutor) driver).executeScript("arguments[0].value = 'John Doe'; arguments[0].dispatchEvent(new Event('input'))", nameInput);

        WebElement emailInput = driver.findElement(By.name("email"));
        emailInput.sendKeys("");
        emailInput.clear(); // 清空輸入框內(nèi)容,確保下面的設(shè)置生效
        emailInput.sendKeys("johndoe@example.com");
        ((JavascriptExecutor) driver).executeScript("arguments[0].value = 'johndoe@example.com'; arguments[0].dispatchEvent(new Event('input'))", emailInput);

        WebElement submitButton = driver.findElement(By.cssSelector("button[type='submit']"));

        // 提交表單
        submitButton.click();

        // 關(guān)閉瀏覽器實例
        driver.quit();
    }
}

這段代碼會通過直接設(shè)置表單元素的 value 屬性來填寫 nameemail 字段,然后點擊提交按鈕。需要注意的是,在設(shè)置 value 屬性后還需要手動觸發(fā)相應(yīng)的事件(如 input 事件),以確保表單數(shù)據(jù)被正確地提交。

再次強調(diào),使用這種方式可能有風險,因為不同瀏覽器可能對于事件的實現(xiàn)機制有所不同,而且這種做法也會繞過瀏覽器內(nèi)置的事件機制,增加了代碼的復雜性和難度,同時也可能存在一些潛在的風險。因此建議仍然采用 Selenium 提供的 API 來填寫表單。

React 表單

Recat 方法一

如果您想使用直接設(shè)置表單元素的 value 屬性來填寫 React 表單,可以參考下面的示例代碼。

假設(shè)在 React 應(yīng)用中有一個名為 LoginForm 的表單組件,包含了用戶名、密碼等元素。下面是使用 Selenium 直接設(shè)置表單元素 value 屬性來填寫并提交表單的示例代碼:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.JavascriptExecutor;

public class FillReactForm {

    public static void main(String[] args) {
        // 設(shè)置 Chrome 瀏覽器驅(qū)動路徑
        System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");

        // 創(chuàng)建 Chrome 瀏覽器實例
        WebDriver driver = new ChromeDriver();

        // 打開 React 表單頁面
        driver.get("http://example.com/react/form");

        // 直接設(shè)置表單元素的 value 屬性
        WebElement usernameInput = driver.findElement(By.id("login-form-username"));
        usernameInput.sendKeys("");
        usernameInput.clear();
        usernameInput.sendKeys("john.doe");
        ((JavascriptExecutor) driver).executeScript("arguments[0].value = 'john.doe'; arguments[0].dispatchEvent(new Event('input'))", usernameInput);

        WebElement passwordInput = driver.findElement(By.id("login-form-password"));
        passwordInput.sendKeys("");
        passwordInput.clear();
        passwordInput.sendKeys("password123");
        ((JavascriptExecutor) driver).executeScript("arguments[0].value = 'password123'; arguments[0].dispatchEvent(new Event('input'))", passwordInput);

        WebElement loginButton = driver.findElement(By.xpath("http://button[text()='Login']"));

        // 提交表單
        loginButton.click();

        // 等待表單提交完成,頁面跳轉(zhuǎn)到下一個頁面
        WebDriverWait wait = new WebDriverWait(driver, 10);
        wait.until(ExpectedConditions.urlContains("/dashboard"));

        // 判斷是否登錄成功
        String pageTitle = driver.getTitle();
        if (pageTitle.equals("Dashboard")) {
            System.out.println("Login succeeded.");
        } else {
            System.out.println("Failed to login.");
        }

        // 關(guān)閉瀏覽器實例
        driver.quit();
    }
}

Recat 方法二

需要注意的是,使用這種方式填寫 React 表單也存在風險,因為不同瀏覽器可能對于事件的實現(xiàn)機制有所不同,而且這種做法也會繞過瀏覽器內(nèi)置的事件機制,增加了代碼的復雜性和難度,同時也可能存在一些潛在的風險。因此建議仍然采用 Selenium 提供的 API 來填寫表單。

如果您使用直接設(shè)置表單元素的 value 屬性來填寫 React 表單沒有生效,可以嘗試使用 React 的 ReactDOM 庫來模擬用戶輸入。具體做法是:首先找到表單組件的根節(jié)點,然后根據(jù)表單元素的 name 屬性以及 ReactDOM.findDOMNode() 方法獲取對應(yīng)的 DOM 元素,最后再調(diào)用 ReactDOM.Simulate.change()ReactDOM.Simulate.input()(視情況而定)模擬用戶輸入。

下面是一個使用 ReactDOM 庫來填寫 React 表單并提交的示例代碼:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.JavascriptExecutor;

public class FillReactForm {

    public static void main(String[] args) {
        // 設(shè)置 Chrome 瀏覽器驅(qū)動路徑
        System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");

        // 創(chuàng)建 Chrome 瀏覽器實例
        WebDriver driver = new ChromeDriver();

        // 打開 React 表單頁面
        driver.get("http://example.com/react/form");

        // 找到表單組件的根節(jié)點
        WebElement formRoot = driver.findElement(By.id("login-form-root"));

        // 根據(jù)表單元素的 name 屬性獲取對應(yīng)的 DOM 元素,并模擬用戶輸入
        WebElement usernameInput = (WebElement) ((JavascriptExecutor) driver).executeScript("return ReactDOM.findDOMNode(arguments[0]).querySelector('[name=\"username\"]')", formRoot);
        usernameInput.sendKeys("john.doe");
        ((JavascriptExecutor) driver).executeScript("return ReactDOM.findDOMNode(arguments[0]).querySelector('[name=\"username\"]').dispatchEvent(new Event('change', {bubbles: true}))", formRoot);

        WebElement passwordInput = (WebElement) ((JavascriptExecutor) driver).executeScript("return ReactDOM.findDOMNode(arguments[0]).querySelector('[name=\"password\"]')", formRoot);
        passwordInput.sendKeys("password123");
        ((JavascriptExecutor) driver).executeScript("return ReactDOM.findDOMNode(arguments[0]).querySelector('[name=\"password\"]').dispatchEvent(new Event('change', {bubbles: true}))", formRoot);

        WebElement loginButton = driver.findElement(By.xpath("http://button[text()='Login']"));

        // 提交表單
        loginButton.click();

        // 等待表單提交完成,頁面跳轉(zhuǎn)到下一個頁面
        WebDriverWait wait = new WebDriverWait(driver, 10);
        wait.until(ExpectedConditions.urlContains("/dashboard"));

        // 判斷是否登錄成功
        String pageTitle = driver.getTitle();
        if (pageTitle.equals("Dashboard")) {
            System.out.println("Login succeeded.");
        } else {
            System.out.println("Failed to login.");
        }

        // 關(guān)閉瀏覽器實例
        driver.quit();
    }
}

需要注意的是,由于 React 的異步機制和組件化開發(fā)方式,該方法仍然存在一些潛在的風險。如果您遇到了相關(guān)問題,可以嘗試查閱 React 官方文檔或者向在線社區(qū)求助。文章來源地址http://www.zghlxwxcb.cn/news/detail-809147.html

到了這里,關(guān)于Java selenium 通過直接設(shè)置表單元素的 value 屬性來填寫 Vue / React 表單的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • selenium之元素常用屬性

    webElement常用屬性與方法 定位到元素后,除了對元素進行操作,還可以獲取元素的一些屬性信息。常見的屬性信息: 1、獲取元素的尺寸:ele.size 2、獲取元素的坐標:ele.location 3、獲取元素的文本內(nèi)容:ele.text text是存在在一對a標簽、p標簽或div標簽中的文本內(nèi)容,如果是標簽中

    2024年01月18日
    瀏覽(24)
  • selenium不定位元素直接使用鍵盤操作(如彈框操作)

    selenium不定位元素直接使用鍵盤操作(如彈框操作)

    今天在使用selenium進行定位時,發(fā)現(xiàn)直接定位不了chrome的彈框,如這種彈框: 使用的是下面這行代碼 運行報錯,說是沒有 alert windown。。。。 ?。侩y道chrome的彈框不是用alert寫的?emmm……還真是,現(xiàn)在很少使用alert這種原生彈框了,多多少少都會自己封裝下,然后就……全網(wǎng)

    2024年02月08日
    瀏覽(27)
  • Selenium WebElement: Selenium 中的頁面元素以及常用的屬性和方法

    Selenium WebElement: Selenium 中的頁面元素以及常用的屬性和方法

    官方文檔 本文是基于 Pytohn-3.7.4 以及 selenium-4.11.2 進行測試的,可以直接通過 pip 命令安裝 selenium : 進入 python 交互界面,引入 selenium 包,檢查安裝結(jié)果: 在準備好 Python 環(huán)境之后,還需要安裝瀏覽器程序, selenium 通過瀏覽器驅(qū)動的可執(zhí)行文件對瀏覽器進行操作。 Windows 可以

    2024年02月10日
    瀏覽(28)
  • Selenium教程__獲取元素文本、屬性值、尺寸(8)

    Selenium教程__獲取元素文本、屬性值、尺寸(8)

    本文將介紹如何使用Selenium來獲取元素的文本內(nèi)容、屬性值和尺寸,并展示一些實際應(yīng)用場景。 學習本文內(nèi)容將能夠輕松地獲取并利用元素的相關(guān)信息,從而更好地進行元素的驗證、操作和斷言。? -事必有法,然后有成-? 最后祝大家早日達到測試的天花板! 以下是我收集到

    2024年02月11日
    瀏覽(26)
  • Spring Boot項目怎么對System.setProperty(key, value)設(shè)置的屬性進行讀取加解密

    Spring Boot項目怎么對System.setProperty(key, value)設(shè)置的屬性進行讀取加解密

    之前我寫過一篇文章使用SM4國密加密算法對Spring Boot項目數(shù)據(jù)庫連接信息以及yaml文件配置屬性進行加密配置(讀取時自動解密),對Spring Boot項目的屬性讀取時進行加解密,但是沒有說明對System.setProperty(key, value)設(shè)置的屬性進行讀取加解密,這個在開發(fā)過程中應(yīng)該怎么實現(xiàn)呢

    2024年02月22日
    瀏覽(21)
  • 微信小程序 通過響應(yīng)式數(shù)據(jù)控制元素class屬性

    微信小程序 通過響應(yīng)式數(shù)據(jù)控制元素class屬性

    我想大家照這個和我最初的目的一樣 希望有和vue中v-bind:class一樣方便的指令 但答案不太盡人意 這里 我們只能采用 三元運算符的形式 參考代碼如下 這里 我們判斷 如果當前item中的userId如果和我們響應(yīng)式數(shù)據(jù)中的userId相同 則給與isThisUser 否則 賦值為空字符串 也能實現(xiàn)效果

    2024年02月10日
    瀏覽(20)
  • selenium通過xpath定位元素報錯?

    selenium通過xpath定位元素報錯?

    1.xpath介紹 XPath 是一門在 XML 文檔中查找信息的語言。XPath 用于在 XML 文檔中通過元素和屬性進行導航。而html中也應(yīng)用了這種語言 ,所以 ,我們定位html頁面元素時也會用到xpath這種方法 。 2.xpath定位方式 xpath主要通過以下四種方法定位 : 路徑定位 屬性定位 多屬性定位 路徑

    2024年04月09日
    瀏覽(17)
  • css元素定位:通過元素的標簽或者元素的id、class屬性定位,還不明白的伙計,看這個就行了!

    css元素定位:通過元素的標簽或者元素的id、class屬性定位,還不明白的伙計,看這個就行了!

    大部分人在使用selenium定位元素時,用的是xpath元素定位方式,因為xpath元素定位方式基本能解決定位的需求。xpath元素定位方式更直觀,更好理解一些。 css元素定位方式往往被忽略掉了,其實css元素定位方式也有它的價值;相對于xpath元素定位方式來說,css元素定位方式更快

    2024年02月11日
    瀏覽(16)
  • Selenium3-當元素通過@FindBy獲取時,返回元素為null

    Selenium3-當元素通過@FindBy獲取時,返回元素為null

    報錯: ?在獲取元素的js屬性時一直獲取不到,報空指針,定位到元素時,發(fā)現(xiàn)是@FindBy的元素沒有找到 解決方法: ?在page類的構(gòu)造函數(shù)中加上了 界面初始化,讓元素先隱式加載,這樣就不會出現(xiàn)返回元素為空的情況辣 調(diào)整后的代碼:

    2024年02月06日
    瀏覽(20)
  • 【CSS 17】attribute selector 屬性選擇器 設(shè)置無class或id的表單樣式

    attribute selector 屬性選擇器 可以設(shè)置帶有特定屬性或?qū)傩灾档?HTML 元素的樣式 [attribute] 選擇器用于選取帶有指定屬性的元素 [attribute=“value”] 選擇器用于選取帶有指定屬性和值的元素 [attribute~=“value”] 選擇器選取屬性值包含指定詞的元素 [attribute|=“value”] 選擇器用于選取

    2024年02月12日
    瀏覽(82)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包