我可以单击()一个按钮,但看不到innerHTML/length。怎么了?(NodeJS)



首先,我想检查模态是否存在,以及它是否确实单击"继续"。我可以单击继续,但首先不检查模式是否存在,因为当我运行 .length 时,它会返回未定义。 我试图获得的div:

<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 事件,以防它在获取元素之前触发,所有这些都没有好的结果。

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);
}

试试这个:

console.log(await driver.findElement(By.xpath("//button[contains(text(),'Sign In')]")).size());

好吧,这可能不是绝对最好的解决方案,但这肯定对我有用。请注意,这是另一个涉及欢迎模态的示例,但它是相同的想法。

await driver.findElement(By.xpath("//*[contains(text(),'Welcome Back')]")).getAttribute("textContent")
.then(null, function (err) {
if (err.name === "NoSuchElementError") {
console.log("No Welcome Modal");
}
})

最新更新