Javascript 用selenium填写位于新页面中的表单

Javascript 用selenium填写位于新页面中的表单,javascript,selenium,selenium-webdriver,selenium-chromedriver,Javascript,Selenium,Selenium Webdriver,Selenium Chromedriver,我正在使用JavaScript和selenium为家庭作业创建简单的web自动化。 这个练习的目的非常简单,单击一个链接,在新页面中填写一个web表单。 问题是,即使我能够正确定位web元素(我想),我也无法填写此表单 我尝试使用Xpath和CSS选择器来定位web元素 const driver = new selenium.Builder().forBrowser("chrome").build(); const form = driver.findElement(By.linkText(

我正在使用JavaScript和selenium为家庭作业创建简单的web自动化。 这个练习的目的非常简单,单击一个链接,在新页面中填写一个web表单。 问题是,即使我能够正确定位web元素(我想),我也无法填写此表单

我尝试使用Xpath和CSS选择器来定位web元素


const driver = new selenium.Builder().forBrowser("chrome").build();

const form = driver.findElement(By.linkText("Form Authentication")).click;

const username = driver.findElement(By.xpath("//form/div/div/input[@id = "username"]")).sendKeys("some text");


driver.get(url);
预期的结果应该是用一些文本填充的表单用户名/密码。
没有显示错误,只是没有操作,

请替换以下代码行:

const username = driver.findElement(By.xpath("//form/div/div/input[@id = "username"]")).sendKeys("some text");
这一行:

const username = driver.findElement(By.xpath("//form/div/div/input[@id = 'username']")).sendKeys("some text");
由于您在双引号内使用双引号,因此它一定给您带来了错误


希望能有所帮助:)

我发现这段代码有很多问题。我不确定
url
变量在运行时包含什么,但我怀疑它包含登录页面的url。您希望先转到URL,然后填写字段

const driver = new selenium.Builder().forBrowser("chrome").build();

driver.get(url);
接下来,您需要确保在JavaScript中正确调用方法

const form = driver.findElement(By.linkText("Form Authentication")).click;
这行代码为
表单
变量指定了对
单击
函数的引用。我认为这不是你想要的。您要单击以下链接:

driver.findElement(By.linkText("Form Authentication")).click();
接下来,您将不正确地嵌套双引号:

const username = driver.findElement(By.xpath("//form/div/div/input[@id = 'username']")).sendKeys("some text");
@id='username'
周围使用单引号

此外,HTML中的id属性本身就是唯一的。您可以将上一个XPATH表达式简化为:

By.xpath("//input[@id = 'username']")

你也错过了一步。输入用户名和密码后,您需要提交表单,通常是通过单击提交按钮。

对不起,我弄乱了代码格式:/单击“表单验证”链接会出现JavaScript逻辑错误。你忘记了“点击”一词后面的
()
。嘿,非常感谢,非常愚蠢的错误。我已经修复并添加了括号,谢谢你的提示:)这应该可以解决OP。谢谢@DebanjanB:)OP是什么意思?最初,OP是操作符的缩写形式,指的是提出问题的用户。但是这些天来,新的投稿人用“OP:”这个词来指不同的事情。嗨,非常感谢你的提示。不管怎样,它还不起作用。看起来,一旦自动化进入新页面,就无法再定位web元素。我得到了这个错误NoSuchElementError:没有这样的元素:无法定位元素:{“方法”:“XPath”,“选择器”:“//form/div/div/input[@id='username']”。我已经检查了数百次,Xpath it是100%正确的…@CarmineLentini既然您确定Xpath是正确的,我怀疑在您尝试搜索它时元素不存在。搜索此元素时请尝试使用显式等待。感谢您宝贵的帮助。我为非常难看的代码感到抱歉,我只是在学习JavaScript,所以我还没有上油。无论如何,我已经做了您建议的修改,并添加了一个窗口处理方法。现在看来一切正常:)