2017-04-26 49 views
0

输入用户名我想这个site硒自动化无法在Way2Automation网站

注册页面进行注册是一个弹出页面中。

HTML代码:

<fieldset> 
<label>Username:</label> 
<input name="username" required="" type="text"/> 
</fieldset> 

当我试图找到该元素使用下面试图代码,元素没有得到发现。

driver.FindElement(By.XPath(".//*[@id='load_form']/fieldset[1]/input")).SendKeys("Kal"); 

我也试图与使用CssSelector,但面临着同样的问题。

driver.FindElement(By.CssSelector("div#load_box form#load_form input[name=username]")).SendKeys("kal"); 

当我执行上面的代码,我已经得到了像element not visible错误

谁能帮助我在这个问题上?

+0

'driver.FindElement(By.Xpath(“.// input [@ name ='name']”))。SendKeys(“kal”);'This这样的错误 –

回答

0

该网站有2个形式的id为load_form,所以你得到的第一个是不可见的,因为它是登录表单。你想要第二个是注册表格。

您可以使用选择器来抓取注册页面上存在的字段之一,然后向上移至其父窗体并获取所有填充字段集的后代。

0

以下是xpath,您可以使用它将文字“Dev”传递到标有“Name”的字段中。

driver.findElement(By.xpath("//div[@class='fancybox-overlay fancybox-overlay-fixed']//form[@id='load_form']/fieldset/input[@name='name']")).sendKeys("Dev");

让我知道如果这个回答你的问题。

0

问题是有两个用户名INPUT字段。我通常处理这个问题的方式是找到我想要的具有ID或唯一性的元素的父项,以区分这两个元素。在这种情况下,你可以使用一个简单的CSS选择器,

#load_box input[name='username'] 

注意load_box ID区分的两个输入。

1

使用下面的XPath:

//*[@id='load_form']/fieldset[6]/input[@name='username'] 
2

使用的XPath定位器

driver.FindElement(By.XPath("//input[@name='name']")).SendKeys("Kal"); 

的XPath的说明试试这个下面的代码: -使用name<input>标签的属性。

宝贵意见: -而不是使用absolute xpath的,使用relative xpath

注意: -在到达此web元素前提供几秒钟的等待,以便您的驱动程序可以找到web元素。所以,你不会得到像element not visible