首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以单击()按钮,但看不到innerHTML/length。出什么事啦?(NodeJS)

我可以单击()按钮,但看不到innerHTML/length。出什么事啦?(NodeJS)
EN

Stack Overflow用户
提问于 2019-12-27 02:27:28
回答 2查看 59关注 0票数 0

首先,我想检查模式是否存在,如果存在,请单击“继续”。我可以单击continue,但不能首先检查该模式是否存在,因为当我运行.length时,它会返回undefined。我正在尝试获取的div:

代码语言:javascript
复制
<div class="v--modal-box v--modal" style="top: 219px; left: 479px; width: 325px; height: auto;">
    <div class="v--modal-close-button absolute border-5 border-dark-grey-4 bg-slate-dark rounded-full z-50">
        <button class="w-full h-full flex items-center justify-center text-grey hover:text-light-grey-1">
            <svg viewBox="0 0 22 22" class="fill-current">
                <path d="M22 2.59L19.41 0 11 8.41 2.59 0 0 2.59 8.41 11 0 19.41 2.59 22 11 13.59 19.41 22 22 19.41 13.59 11 22 2.59z"></path>
            </svg>
        </button>
    </div>
    <div class="p-4 md:p-6">
        <h3 class="heading text-center mb-2">Sign In</h3>
        <p class="text-center text-light-grey-1 text-sm md:text-base mb-6">Please sign in to start playing!</p>
        <a href="/login">
            <button data-v-4318eb75="" class="button-primary button-primary--green button-primary--large w-full">
                <svg data-v-4318eb75="" viewBox="0 0 22 22" class="w-26 w-26 mr-2">
                    <path data-v-4318eb75="" d="M11 0A10.93 10.93 0 0 0 .12 10.12L6 12.56A3 3 0 0 1 7.7 12h.17l2.6-3.8v-.04a4.11 4.11 0 1 1 4.11 4.15h-.1L10.78 15v.15a3.08 3.08 0 0 1-6.11.61L.49 14a10.89 10.89 0 0 0 21.39-3A11 11 0 0 0 11 0zM7 16.69l-1.34-.56a2.34 2.34 0 0 0 1.14 1.15 2.33 2.33 0 0 0 3-3.05 2.29 2.29 0 0 0-2.95-1.29l1.38.58a1.72 1.72 0 0 1 .92 2.24 1.69 1.69 0 0 1-2.15.93zm10.32-8.53a2.74 2.74 0 1 0-2.74 2.77 2.75 2.75 0 0 0 2.74-2.77zm-4.79 0a2.06 2.06 0 1 1 2.05 2.08 2.07 2.07 0 0 1-2.05-2.08z"></path>
                </svg>Sign In
                <!---->
            </button>
        </a>
    </div>
    <!---->
</div>

我正在尝试运行的代码,它成功地单击了按钮,但返回了未定义的长度。我还尝试了.innerHTML并删除了.click事件,以防它在获取元素之前触发,但都没有好的结果。

代码语言:javascript
复制
const {Builder, By, Key, util} = require('selenium-webdriver');
var fs = require('fs');

launchSelenium();

async function launchSelenium(username, password) {
    let driver = await new Builder().forBrowser('firefox').build();

    await driver.get('https://csgoempire.com/');

    setTimeout(async function() {
        await driver.switchTo().activeElement();
        console.log(await driver.findElement(By.xpath("//button[contains(text(),'Sign In')]")).length);
        await (await driver.findElement(By.xpath("//button[contains(text(),'Sign In')]"))).click();
    }, 10000);
}
EN

回答 2

Stack Overflow用户

发布于 2019-12-27 02:39:08

试试这个:

代码语言:javascript
复制
console.log(await driver.findElement(By.xpath("//button[contains(text(),'Sign In')]")).size());
票数 1
EN

Stack Overflow用户

发布于 2019-12-27 21:55:27

嗯,这可能不是绝对最好的解决方案,但这对我来说肯定有效。请注意,这是另一个涉及欢迎模式的示例,但是它的概念是相同的。

代码语言:javascript
复制
                    await driver.findElement(By.xpath("//*[contains(text(),'Welcome Back')]")).getAttribute("textContent")
                        .then(null, function (err) {
                            if (err.name === "NoSuchElementError") {
                                console.log("No Welcome Modal");
                            }
                        })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59492090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档