我是selenium webdrive的初学者,并尝试为gmail登录和注销制作代码,但无法通过“Id”注销,如果有人建议如何注销它,对我有帮助。以下是我所做的代码,请检查并建议:
public class seleniumExample {
public static WebDriver driver;
public static WebElement element, element1;
public static void main(String[] args) {
// TODO Auto-generated method stub
// Intialize chrome driver
driver = new FirefoxDriver();
driver.get("http://www.gmail.com");
element = driver.findElement(By.id("Email"));
element.sendKeys("xyz@gmail.com");
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
element1 = driver.findElement(By.id("Passwd"));
element1.sendKeys("xyz");
element.submit();
driver.findElement(By.id("gbi4m1")).click();
driver.findElement(By.id("gb_71")).click();
}
}
答案 0 :(得分:4)
以下ID:gbi4m1
并未指向任何内容。这导致您的测试用例失败。正如我之前所说,谷歌不是一个学习硒的合适场所,页面很复杂,如果你是初学者,动态id很难处理。
通常在浏览器中,您可以使用开发工具检查选择器是否可用于定位元素。因此,在您在代码中实际使用特定选择器之前,您可以验证它是否有效。这将节省大量时间。
使用此功能的另一个好处是检查选择器的唯一性。如果有多个元素具有相同的选择器,findElement()
将返回第一个元素。在这
如果选择器有效但它不是唯一的,这反过来会导致测试用例失败。
如果选择器是唯一的,则控制台仅显示一个元素。
让我用一个简单的例子解释:
要点击此页面右上角的提问> 按钮,以下选择器即可使用。
css = #nav-askquestion
现在您可以使用浏览器的开发工具进行确认。
只需在控制台上输入$('selector_to_check')
,它就会显示与此选择器相关的所有元素。
我使用过Chrome:
如果输入的选择器无效,则显示空数组。
答案 1 :(得分:0)
首先,你正在服用的id不存在。这样就行不通了。其次,一旦您正确识别退出按钮,我们就可以更容易地确定问题的确切性质
答案 2 :(得分:0)
我不知道你在哪里得到“gbi4m1”?无论如何为什么不使用By.className
driver.findElement(By.className("gb_O")).click();
driver.findElement(By.id("gb_71")).click();
似乎为我工作
答案 3 :(得分:0)
使用cssSelector,以下代码为我工作
答案 4 :(得分:0)
这是selenium webdriver
中gmail注销的绝佳代码driver.findElement(
By.xpath("//*[@id='gb']/div[1]/div[1]/div[2]/div[5]/div[1]/a/span"))
.click();
driver.findElement(By.id("gb_71")).click();
答案 5 :(得分:-1)
以下代码对我有用: -
driver.findElement(
By.xpath("//*[@id='gb']/div[1]/div[1]/div[2]/div[5]/div[1]/a/span"))
.click();
driver.findElement(By.id("gb_71")).click();
我使用xpath查找帐户图标,它对我来说很好。