javascript - 通过 node.js 和 webdriver 点击随机链接

标签 javascript node.js selenium selenium-webdriver

我有一些包含不同产品的页面,应该随机选择其中一个。 我已经对 javascript 进行了测试,但是在尝试使用 node.js 和 selenium 编写它时遇到了问题。

在我的测试页面上我得到了下一个结构

<div class="products">
    <table width="600" cellspacing="6">
        <tbody>
            <tr>
                <td>
                    <a href="phones-59.php"></a>
                </td>
                <td>...
                </td>
            </tr>
            <tr>...</tr>
...

所以下一个例子是在 javascript 上工作,我得到了我需要的所有链接

   links = document.getElementById('products').getElementsByTagName('a');

然后我使用随机并选择一些链接,像这样(这里有例子 Choosing a link at random)

   randomlink = Math.round(Math.random() * (links.length+1));
   links[randomlink].click();

没什么特别的,但是当我在 node.js 中尝试这种技巧时,我无法访问链接。我在尝试使用 click() 和其他函数时遇到错误

driver.findElement(webdriver.By.id('products')).findElements(webdriver.By.tagName('a'));

那么我怎样才能点击我的“产品” block 中的随机链接呢? 谢谢

PS 我已经从 firefox 开发人员控制台复制了“唯一选择器”,但不知道如何以正确的方式使用它(我尝试使用 xpath 但没有成功)

"products > table:nth-child(1) > tbody:nth-child(1)"

更新 我也尝试过这样的构造并获得了正确数量的链接,但无法访问它们

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 的示例

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 How to parse html properly

关于javascript - 通过 node.js 和 webdriver 点击随机链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25298669/

相关文章:

javascript - Grails GSP 和模板关系

javascript - 重新加载/重新初始化/刷新 CommonJS 模块

javascript - 如何使用 Selenium 滚动谷歌地图搜索显示的结果

javascript - 相当于 Ruby 的 Enumerable#cycle 的 JavaScript 是什么?

javascript - 单击 div 外部时关闭 div 在 iPhone 上不起作用。在 Mac/PC 和 Android 上运行良好

javascript - CSS三 Angular 形在两种颜色之间过渡

node.js - 访问 S3 存储桶时 AWS Lambda 错误

node.js - npm install <module> 持续错误? ( Node gyp 构建?)

css - 使用 CSS 识别定位器

java - 主线程异常 : Unable to locate an element with the x path expression