我正在尝试从here中选择电子邮件,密码和登录元素。
该元素具有唯一的ID,我可以通过检查来复制Xpath。
我尝试了这些查询,无法弄清楚为什么Selenium无法找到它。
/etc/php5/apache2/php.ini
驱动器可以打开并启动chrome来执行此操作。但是,我不幸运。 请告诉我这些无效的方式。据我了解,id应该是完全唯一的,但By.id和By.xpath方法都没有找到元素。
这是我的代码。
WebElement emailfield = driver.findElement(By.id("lid"))
WebElement emailfield = driver.findElement(By.xpath("//*[@id=\'lid\']"));
WebElement emailfield = driver.findElement(By.xpath("//*[@id=lid]"));
这是HTML表格。
String email = "myemail";
String password = "the_password";
WebElement emailfield = driver.findElement(By.id("lid"));
emailfield.sendKeys(email );
WebElement passwordfield = driver.findElement(By.xpath("//*[@id=pwd]"));
passwordfield.sendKeys(password );
WebElement login = driver.findElement(By.id("submit_but"));
login.click();
这是一个显式等待编译,等待10秒并给出相同的错误。
<table width="260" align="center" class="mob_width" cellspacing="2" cellpadding="1">
<tbody><tr>
<td colspan="2">
<h3 class="signintxt">Sign In</h3>
</td>
</tr>
<tr>
<td align="center" colspan="2"><span id="msgpanel"></span></td>
</tr>
<tr>
<td class="label">Email / Phone:</td>
<td align="left"><input name="lid" class="input usrbx" id="lid" onkeypress="clearmsg()" type="email" value=""></td>
</tr>
<tr>
<td class="label">Password:</td>
<td align="left"><input name="pwd" class="input passbx" id="pwd" onkeypress="clearmsg()" type="password"></td>
</tr>
<tr>
<td class="label"></td>
<td align="left"><div class="forgotpasslink"><span onclick="goToForgotPassword();">Forgot Password?</span></div>
</td></tr>
<tr id="hiptr" style="display: none;">
<td class="label"> </td><td align="left"> </td>
</tr>
<tr>
<td class="emptytd"></td>
<td height="30" class="mobile-height">
<div class="sectxt">
<label>
<input name="rem" id="rem" type="checkbox" value="10">
<span class="securetxt">Keep me signed in</span>
</label>
</div>
</td>
</tr>
<tr>
<td class="emptytd"></td>
<td align="left">
<button name="submit" class="submit_mobile" id="submit_but" type="submit">Sign In</button>
</td>
</tr>
</tbody></table>
答案 0 :(得分:1)
字段位于XDocument doc = XDocument.Parse(alto);
var a = doc.Descendants("TextBlock").Last();
foreach (var item in lstpc)
{
a.AddAfterSelf(new XElement(item));
}
内。你需要先切换到它
<iframe>
有关更多切换选项,请查看here。
答案 1 :(得分:0)
在编写xpath时发生了语法错误,
//*[@id=\'lid\']
语法错误[你可以使用firebug&amp; amp; firepath]。
尝试下面的xpath它应该工作,
.//*[@id='lid']
但是,您可以添加父Form节点以使其更加健壮,
.//form[@id='login']//*[@id='lid']
最后,您需要确保在进行元素识别之前等待页面完全加载。
有关明确等待的更多信息,请参阅Selenium webdriver explicit wait