单击<a>.之间具有特定名称的链接的JS.<>标签.我应该使用 window.find(string).click()、

JS thats clicks link with specific name between <a>...<a/> tags. Should i use window.find(string).click(), Xpath or object.innertext?

本文关键字:window find 我应该 string click 链接 之间 JS 单击 定名称 标签      更新时间:2023-09-26

我正在尝试编写一个JavaScript,该脚本单击页面上的链接,该链接仅在链接标签之间描述特定名称

<a>"Name of product"</a> 

这是网页上的代码。

<a href="/shop/category/k3xmhac9o/lvt89rd5q" class="name-link">"Name of product"</a>

链接是随机加扰和生成的,但产品名称可用。我试过了

window.find("Name of product").click()

但它不起作用

我读到这可能有效

driver.findElement(By.xpath("//a[@title = 'Name of product']")).click();

但是我正在通过Applescript运行JavaScript,我不确定我是否可以通过Applescript使用Webdriver。

还有其他方法可以点击链接吗?

我还读到"object.innerText"可能是一个选项

这是实现您正在寻找的内容的简洁方法

var tags = document.querySelectorAll('a.name-link')
for(var i = 0; i < tags.length ; i++) {
    if(/Name of product/.test(tags[i].innerHTML)) {
        tags[i].click()
    }
}

希望这有帮助!

"name-link"是实际的类名(表明页面上会有很多具有该确切名称的类名)还是会反映产品的唯一"名称"? 如果它是唯一的,您可以使用 document.querySelector('.name-link').click() . 如果它不是唯一的,您是否可以提供更多上下文,例如更可靠的选择元素,然后找到此元素:parentElement.getElementsByClassName[0].click()parentElement.querySelector('.name-link').click()

如果你有标准的 DOM 访问权限,你可以这样做:

var link = Array.prototype.find.call(
    document.querySelectorAll("a.name-link"),
    function(a) {
        if (a.innerHTML.trim() == '"Name of product"') { // Is it really in "?
            return true;
        }
    }
);
if (link) {
    link.click();
}

注意:您可能需要在较旧的浏览器上填充Array#find

或者不需要垫片Array#find,实际上:

Array.prototype.some.call(
    document.querySelectorAll("a.name-link"),
    function(link) {
        if (link.innerHTML.trim() == '"Name of product"') { // Is it really in "?
            link.click();
            return true;
        }
    }
);