亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

React.js 如何定義自定義id,而不是在html中顯示

React.js 如何定義自定義id,而不是在html中顯示

暮色呼如 2022-07-20 20:50:20
如何更改 React.js 應用程序以停止隨機分配 inputId,以便 Selenium 能夠始終如一地工作?我正在使用 Selenium 和 React.js 應用程序。該應用程序一直在開發中。我有一個 Selenium 方法,可以使用一個可重用的方法隨機選擇反應下拉列表,但是反應下拉列表的 id 由于某種原因不斷變化,可能是每次構建應用程序時,所以這會為 Selenium 測試創建返工。Selenium 方法:(在 JAVA 中)除了那些 react-select inputIds 改變之外,這個方法可以在反應下拉列表中隨機選擇選項,但它需要被清理。無論是否已經通過導航選擇了一個選項,它都會選擇一個選項,然后返回下拉菜單。public String RandomSelect(WebDriver mydriver, String myid){try{Actions actions = new Actions(mydriver);actions.pause(300);WebElement dropdown = mydriver.findElement(By.id(myid));String scrollElementIntoMiddle = "var viewPortHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);" +"var elementTop = arguments[0].getBoundingClientRect().top;"+"window.scrollBy(0, elementTop-(viewPortHeight/2));";((JavascriptExecutor) mydriver).executeScript(scrollElementIntoMiddle, dropdown);//((JavascriptExecutor) mydriver).executeScript(// "arguments[0].scrollIntoView();", dropdown); actions.moveToElement(dropdown).click().build().perform();actions.pause(1000);actions.sendKeys(Keys.DELETE).build().perform();actions.pause(1000);actions.sendKeys(Keys.TAB).build().perform();actions.pause(1000);actions.moveToElement(dropdown).click().build().perform();actions.pause(1000);//  actions.pause(3000);//actions.sendKeys(Keys.DELETE);WebDriverWait wait = new WebDriverWait(mydriver, 10);wait.until(ExpectedConditions.elementToBeClickable(By.className("Select-option")));List<WebElement> options = mydriver.findElements(By.className("Select-option"));List<String> stroptions = new ArrayList<>();System.out.println(options.size());for (WebElement option: options) 使用硒方法:做這樣的事情 100 次比鍵入所有 Selenium 方法 100 次要容易。WebDriver driver;driver = new EdgeDriver();ReactDropdown mydropdown = new ReactDropdown();mydropdown.RandomSelect(driver, "react-select-1--value");如何刪除動態分配的“react-select-1--value”并將 id 定義為更直觀的東西,如“mydropdown--value”,以便每次應用程序構建時都維護 id?
查看完整描述

2 回答

?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

您可以將 xpath 用作 -

//span[@class='Select-multi-value-wrapper' 和 @id[starts-with(@id,'react-select')


查看完整回答
反對 回復 2022-07-20
?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

我自己找到了一個解決方案,inputId 是制作唯一 id 并刪除 react-select 丑陋的關鍵。這是一個例子......


import React from 'react';

import Select from 'react-select';


const options = [

{ value: 'chocolate', label: 'Chocolate' },

{ value: 'strawberry', label: 'Strawberry' },

{ value: 'vanilla', label: 'Vanilla' }

];


export class Counter extends React.Component {

state = {

    selectedOption: null,

}

handleChange = (selectedOption) => {

    this.setState({ selectedOption });

    console.log(`Option selected:`, selectedOption);

}

render() {

    const { selectedOption } = this.state;


    return (

        <Select

            value={selectedOption}

            inputId="mydropdown"

            onChange={this.handleChange}

            options={options}

        />



    );

}

}

靜態定義 inputId 后,我的 Selenium 方法似乎效果更好。


查看完整回答
反對 回復 2022-07-20
  • 2 回答
  • 0 關注
  • 268 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號