Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击role=';按钮';isn';不工作_Javascript_Selenium_Selenium Webdriver - Fatal编程技术网

Javascript 单击role=';按钮';isn';不工作

Javascript 单击role=';按钮';isn';不工作,javascript,selenium,selenium-webdriver,Javascript,Selenium,Selenium Webdriver,使用role='button'单击div元素不起作用。我需要单击图标,但我无法执行此操作 html: 您正在获取陈旧的元素异常,因为您正在尝试获取具有旧引用的元素。每次单击循环中的元素时,元素引用都会更新,allButtons[i]不起作用。为了处理这个问题,你必须得到最新的按钮。试试下面的方法 js: const{By,Key,until}=require(“selenium webdriver”); const webdriver=require(“selenium webdriver”);

使用role='button'单击div元素不起作用。我需要单击图标,但我无法执行此操作

html:


您正在获取陈旧的元素异常,因为您正在尝试获取具有旧引用的元素。每次单击循环中的元素时,元素引用都会更新,
allButtons[i]
不起作用。为了处理这个问题,你必须得到最新的按钮。试试下面的方法

js:

const{By,Key,until}=require(“selenium webdriver”);
const webdriver=require(“selenium webdriver”);
要求(“chromedriver”);
异步()=>{
让driver=等待新的webdriver.Builder().forBrowser(“chrome”).build();
试一试{
等待驱动程序。获取(“http://10.203.201.77:8000/login");
让findButtons=wait driver.findElements(按.tagName('strong'));
let buttons=findButtons.map(elem=>elem.getText());
const allButtons=等待承诺。所有(按钮);
console.log(allButtons);//显示所有按钮值,如ItemName1
让t按钮;
for(设i=0;ielem.getText());#获取按钮以便元素引用将刷新
如果(所有按钮[i]=='ItemName2'){
tButton=等待查找按钮[i];
tButton.click();//我尝试单击此按钮,其中value=ItemName2
console.log(allButtons[i]);//显示按钮值'ItemName2'
}
}
控制台日志(“完成”);
}捕获(e){
控制台日志(e);
}最后{
等待驱动程序。退出();
}
}
}

您正在获取陈旧的元素异常,因为您试图获取具有旧引用的元素。每次单击循环中的元素时,元素引用都会更新,
allButtons[i]
不起作用。为了处理这个问题,你必须得到最新的按钮。试试下面的方法

js:

const{By,Key,until}=require(“selenium webdriver”);
const webdriver=require(“selenium webdriver”);
要求(“chromedriver”);
异步()=>{
让driver=等待新的webdriver.Builder().forBrowser(“chrome”).build();
试一试{
等待驱动程序。获取(“http://10.203.201.77:8000/login");
让findButtons=wait driver.findElements(按.tagName('strong'));
let buttons=findButtons.map(elem=>elem.getText());
const allButtons=等待承诺。所有(按钮);
console.log(allButtons);//显示所有按钮值,如ItemName1
让t按钮;
for(设i=0;ielem.getText());#获取按钮以便元素引用将刷新
如果(所有按钮[i]=='ItemName2'){
tButton=等待查找按钮[i];
tButton.click();//我尝试单击此按钮,其中value=ItemName2
console.log(allButtons[i]);//显示按钮值'ItemName2'
}
}
控制台日志(“完成”);
}捕获(e){
控制台日志(e);
}最后{
等待驱动程序。退出();
}
}
}
我找到了解决方案:

 let findButtons = await driver.findElements(By.tagName('strong'));

 let buttons = findButtons.map(async elem => await elem.getText()); // I add async & await
 const allButtons = await Promise.all(buttons);
 console.log(allButtons);   // There are all itemName       
我找到了解决办法:

 let findButtons = await driver.findElements(By.tagName('strong'));

 let buttons = findButtons.map(async elem => await elem.getText()); // I add async & await
 const allButtons = await Promise.all(buttons);
 console.log(allButtons);   // There are all itemName       

您好,您能为Html部分添加更多内容吗?您好,您能为Html部分添加更多内容吗?
(node:12254) UnhandledPromiseRejectionWarning: StaleElementReferenceError: stale element reference: element is not attached to the page document
const { By, Key, until } = require("selenium-webdriver");
const webdriver = require("selenium-webdriver");
require("chromedriver");
async () => {
  let driver = await new webdriver.Builder().forBrowser("chrome").build();
  try {
    await driver.get("http://10.203.201.77:8000/login");

    let findButtons = await driver.findElements(By.tagName('strong'));

    let buttons = findButtons.map(elem => elem.getText());
    const allButtons = await Promise.all(buttons);
    console.log(allButtons);             // It is displayed all button values, such as ItemName1
    let tButton;
    for (let i = 0; i < findButtons.length; i++) {
      buttons = findButtons.map(elem => elem.getText()); # getting the button so that the elements refererence will refresh
      if (allButtons[i] == 'ItemName2') {
        tButton = await findButtons[i];
        tButton.click();                // I try to click on this button, where value = ItemName2
        console.log(allButtons[i]);     //  It is displayed button value 'ItemName2'

      }
    }
      console.log("DONE");
    } catch (e) {
      console.log(e);
    } finally {
      await driver.quit();
    }
  }
}
 let findButtons = await driver.findElements(By.tagName('strong'));

 let buttons = findButtons.map(async elem => await elem.getText()); // I add async & await
 const allButtons = await Promise.all(buttons);
 console.log(allButtons);   // There are all itemName