点击通过node.js和webdriver的随机链接 [英] Click on random link via node.js and webdriver
问题描述
我有一些不同产品的页面,应该随机选择其中一个。
我已经对javascript进行了测试,但在尝试使用node.js和selenium编写时遇到了问题。
I have some page with different products and should select randomly one of them. I have made test on javascript but have problems when trying to write it using node.js and selenium.
在我的测试页面上我得到了下一个结构
On my test page I got next structure
<div class="products">
<table width="600" cellspacing="6">
<tbody>
<tr>
<td>
<a href="phones-59.php"></a>
</td>
<td>...
</td>
</tr>
<tr>...</tr>
...
所以下一个例子正在研究javascript,我得到了我需要的所有链接
So next example is working on javascript and I got all links I need
links = document.getElementById('products').getElementsByTagName('a');
然后我使用随机选择一些链接,就像这样(这里的示例随机选择一个链接)
then I use random and select some link, something like this (got example here Choosing a link at random)
randomlink = Math.round(Math.random() * (links.length+1));
links[randomlink].click();
没什么特别的,但是当我在node.js中尝试过这样的技巧时,我无法访问链接。尝试使用click()和其他函数时出错。
Nothing special, but when I have tried such trick in node.js I can't access to links. I got errors when trying to use click() and other functions
driver.findElement(webdriver.By.id('products')).findElements(webdriver.By.tagName('a'));
那么我如何点击我的产品块中的随机链接?
谢谢
So how I can click on random link in my "products" block? Thanks
PS我从firefox开发者控制台复制了unique selector,但不知道如何以正确的方式使用它(我尝试过使用xpath没有成功)
PS I have copied "unique selector' from firefox developers console, but have no idea how to use it in right way (I have tried use xpath without success)
"products > table:nth-child(1) > tbody:nth-child(1)"
更新
我也尝试过这样的构造并获得正确数量的链接,但无法访问它们
update I have also tried such construction and got correct number of links, but can't access to them
ll = driver.findElement(webdriver.By.id('products'));
lk = ll.findElements(webdriver.By.tagName('a')).then(function(txt) {
logger.info("lk length: " + txt.length); });
推荐答案
这很奇怪:)但它有效
Bing.Com的例子
Example for Bing.Com
var webdriver = require('selenium-webdriver');
var logger = require('winston');
driver.get('http://bing.com');
driver.findElements(webdriver.By.tagName('a')).then(function(elems){
logger.info("links count: " + elems.length);
rnd = Math.round(Math.random() * (elems.length+1));
logger.info("rnd number: " + rnd);
elems[rnd].getText().then(function(textValue){
logger.info("link name: " + textValue);
});
elems[rnd].then(function (elem) {
elem.click();
});
});
我在这里找到答案 Node.js + Selenium如何正确解析html
这篇关于点击通过node.js和webdriver的随机链接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!