Javascript 在nodejs中使用webdriver selenium选择按钮元素
我有一个html页面发布数据到服务器上,我需要选择自动作业的特定按钮Javascript 在nodejs中使用webdriver selenium选择按钮元素,javascript,html,node.js,selenium-webdriver,Javascript,Html,Node.js,Selenium Webdriver,我有一个html页面发布数据到服务器上,我需要选择自动作业的特定按钮 姓名2 名称2 名字3 文本1 文本2 我正在尝试使用selenium选择“text2” (await driver).findElement(By.className("cdk-overlay-pane btn btn-blue")).click(); 但它失败了: Unable to locate element: {"method":"css selector","selecto
姓名2
名称2
名字3
-
文本1
-
文本2
我正在尝试使用selenium选择“text2”
(await driver).findElement(By.className("cdk-overlay-pane btn btn-blue")).click();
但它失败了:
Unable to locate element: {"method":"css selector","selector":"cdk-overlay-pane btn btn-blue"}
也试过
(await driver).findElement(By.className("btn btn-blue")).click();
又失败了。
如何选择?根本原因是源代码中没有包含
cdk覆盖窗格btn btn blue
的元素。相反,类为btn-btn-blue的元素位于类为cdk覆盖窗格的div中。因此,在本例中,当您使用css
指向元素时,必须使用By.css
。仅当您使用目标元素的class
定位元素时,请使用By.className
注意:
不必将元素类
中类之间的空格显式替换为
,因为硒代码会处理这一问题
例:
findElement(By.className('btn.btn blue'))
-正确
findElement(按.className('btn btn blue'))
-正确
findElement(By.className('.btn.btn blue'))
-错误(因为selenium将在
前面加上此处发送的类名)
以下是selenium使用的逻辑供您参考
static className(name) {
let names = name.split(/\s+/g)
.filter(s => s.length > 0)
.map(s => escapeCss(s));
return By.css('.' + names.join('.'));
}
来源
因此,您可以尝试以下方法
(await driver).findElement(By.css(".cdk-overlay-pane .btn.btn-blue")).click();
截图:
它也失败了,就像{“cdk覆盖窗格\.btn\.btn蓝色”}请检查更新的答案。如果仍然出现NoTouchElement异常
请检查元素是否包装在iframe中。@trmt请在更新的答案中找到详细的解释。如果你还有任何问题,请告诉我。