小编F. *_*kes的帖子

设置输入值而不是sendKeys() - selenium webdriver nodejs

我有一个长串测试,sendKeys()需要太长时间.当我试图设置text程序崩溃的值时.我知道Selenium sendKeys()是测试实际用户输入的最佳方式,但对于我的应用程序,它需要花费太多时间.所以我试图避免它.

有没有办法立即设置价值?

看到这个简单的例子:

var webdriver = require('selenium-webdriver');

var driver = new webdriver.Builder().
   withCapabilities(webdriver.Capabilities.chrome()).
      build();

driver.get('http://www.google.com');

// find the search input field on google.com
inputField = driver.findElement(webdriver.By.name('q'));

var longstring = "test"; // not really long for the sake of this quick example

// this works but is slow
inputField.sendKeys(longstring);

// no error but no values set
inputField.value = longstring;

// Output: TypeError: Object [object Object] has no method 'setAttributes'

inputField.setAttributes("value", longstring);
Run Code Online (Sandbox Code Playgroud)

javascript selenium node.js selenium-webdriver

33
推荐指数
3
解决办法
15万
查看次数

检查元素是否存在 - selenium/javascript/node-js

我想在执行此行之前检查元素是否存在:

driver.findElement(webdriver.By.id('test'));

如果test文档中不存在id ,即使在try-block中,也会抛出错误"no such element" .我找到了Java的答案,您可以在其中检查大小是否为0,但在node-js中,这会在我检查大小之前抛出错误.

throw error; ^ NoSuchElementError: no such element

javascript selenium node.js

8
推荐指数
1
解决办法
2万
查看次数

选择嵌套的iframe - selenium/javascript/node-js

我想在node-js中使用selenium webdriver模块在iframe中选择嵌套的iframe.

例如:

<iframe id="firstframe">
   <div id="firstdiv"></div>
   <iframe id="secondframe">
     <div id="seconddiv"></div>
   </iframe>
</iframe>
Run Code Online (Sandbox Code Playgroud)

对于node-js部分:

driver.switchTo().defaultContent();
driver.switchTo().frame("firstframe");   // --> works
driver.switchTo().frame("secondframe");  // --> NoSuchFrameError


iframes = driver.findElements(webdriver.By.tagName('iframe')).then(function(elements){
            console.log(elements.length); // --> if I put this code before the switch to first frame output: 1, if I put it after output: 0)
            });
Run Code Online (Sandbox Code Playgroud)

我尝试使用索引号,但这也失败了.

编辑:

好吧,我想通了,但我的答案被用户@casparOne因某些原因删除了.如果有人仍然想知道这里的问题是什么:

我上面的代码工作,只是不在本地.Chrome的安全设置拒绝在本地文件的iframe中更深入.因此它甚至没有显示iframe的源代码.

javascript iframe selenium node.js

8
推荐指数
1
解决办法
5502
查看次数

设置用户代理与硒的webdriver和phantomjs中的NodeJS

我需要改变我的PhantomJS浏览器是的驾驶硒webdriver的用户代理.

我找到了用C#,Ruby和Java更改用户代理的方法

这就是我尝试过的:

var webdriver = require('selenium-webdriver');
var useragent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0";

var driver = new webdriver.Builder().
    withCapabilities(webdriver.Capabilities.phantomjs("phantomjs.page.settings.userAgent", useragent)).
    build();
Run Code Online (Sandbox Code Playgroud)

Web服务器上的结果仍然如下所示: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.7 Safari/534.34

javascript user-agent node.js phantomjs selenium-webdriver

5
推荐指数
1
解决办法
1469
查看次数

正则表达式字符串不匹配

我在使用Python匹配字符串中的数字时遇到了问题,应该清楚地匹配它.它甚至不匹配[0-9] [\d]或仅仅是0一个人.我的疏忽在哪里?

import re

file_without_extension = "/test/folder/something/file_0"

if re.match("[\d]+$", file_without_extension):
   print "file matched!"
Run Code Online (Sandbox Code Playgroud)

python regex

3
推荐指数
2
解决办法
2898
查看次数

异步等待JSON解析未等待

我在async/await不等待上一个声明时遇到了问题。我正在尝试读取JSON文件,然后尝试操纵结果对象。尽管有一个数组,但它在执行下一个功能时仍未定义await

function initJson(file) {
  let obj;
  fs.readFile(file, 'utf8', (err, data) => {
  if (err) {
    throw err;
  }
  try {
    const obj = JSON.parse(data);
    console.log(obj);
   }
   catch (err) {
     throw err;
   }
 });
 return obj;
};

filterItemForKeyValue = function filterItemForKeyValue(obj, k, v) {
  if (typeof obj !== 'undefined' && obj) {
    return obj.filter(item => item[k] !== v);
  }
  return false;
};

async function handleFavorites(file) {
  let favorites = await initJson(file);
  favorites = await filterItemForKeyValue(favorites, 'delete', true); …
Run Code Online (Sandbox Code Playgroud)

arrays json node.js async-await

2
推荐指数
1
解决办法
905
查看次数