【问题标题】:Selenium Webdriver locator(using java)Selenium Webdriver 定位器(使用 java)
【发布时间】:2018-05-15 08:29:32
【问题描述】:

我的按钮定位器不起作用。为此,我不能走得更远。我试过 xpath、cssSelector、ID。这些都不起作用。我上传代码。我是硒的新手。最后一个命令不起作用。

public class Upload {

  public static void main(String[] args) {

    System.setProperty("webdriver.chrome.driver","E:\\chromedriver_win32\\chromedriver.exe");
    WebDriver driver = new ChromeDriver();
    JavascriptExecutor js = (JavascriptExecutor) driver;
    driver.get("http://888.b7omc88t.io/");
    driver.manage().window().maximize();
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

    //code for boomcast portal login

    driver.findElement(By.xpath("/html/body/div[1]/div/div/section/form/div[1]/input")).click();
    driver.findElement(By.xpath("/html/body/div[1]/div/div/section/form/div[1]/input")).sendKeys("fatima@ssd-tech.com");
    driver.findElement(By.xpath("/html/body/div[1]/div/div/section/form/div[2]/input")).click();
    driver.findElement(By.xpath("/html/body/div[1]/div/div/section/form/div[2]/input")).sendKeys("1234");
    driver.findElement(By.xpath("/html/body/div[1]/div/div/section/form/div[3]/button")).click();

    driver.findElement(By.xpath("/html/body/div[2]/div/div/div[1]/div/div[3]/div/ul/li[4]/a")).click();
    driver.findElement(By.xpath("/html/body/div[2]/div/div/div[1]/div/div[3]/div/ul/li[4]/ul/li/a")).click();
    driver.findElement(By.xpath("//*[@id=\"smbscheduleobdStep2\"]")).click();
    driver.findElement(By.xpath("/html/body/div[2]/div/div/div[3]/div/div/div[2]/div/form/div[1]/div[3]/div/div/div/input")).click();
    driver.findElement(By.xpath("/html/body/div[2]/div/div/div[3]/div/div/div[2]/div/form/div[1]/div[3]/div/div/div/input")).sendKeys("01791719879");
    driver.findElement(By.xpath("/html/body/div[2]/div/div/div[3]/div/div/div[2]/div/div[2]/a[3]")).click();
    driver.findElement(By.cssSelector("#content > div:nth-child(1) > div:nth-child(1) > div:nth-child(2) > div:nth-child(1) > form:nth-child(3) > div:nth-child(5) > div:nth-child(3) > div:nth-child(2) > button:nth-child(1)")).click(); // This line is not getting executed

}

按钮的HTML:

<div class="col-md-3 text-right">
    <button id="smbscheduleobdStep3" type="button" class="btn btn-block">Saved files</button>
</div>

【问题讨论】:

  • 是否有任何错误?如果可能,分享元素的 html 代码。
  • 您的代码有很多糟糕的绝对 xpath 定位器。请修理它们,因为它们很脆。您使用的 css 选择器也很脆弱。请添加 HTML 以便更好地调试和定位器选择。

标签: java selenium selenium-webdriver xpath css-selectors


【解决方案1】:
  1. 检查您的定位器是否可以通过 FF 中的开发工具工作
  2. 定位器可以简化为By.cssSelector("#smbscheduleobdStep3")
  3. 检查您的元素是否不在框架中,如果是,则需要使用driver.manage().switchTo().frame() 进行切换。

当然也可以使用上面提到的WaitDriver。

【讨论】:

    【解决方案2】:

    根据您提供的 HTML 来单击 Button,您必须诱导 WebDriverWait 按钮才能被点击,您可以使用以下代码行:

    import org.openqa.selenium.By;
    import org.openqa.selenium.support.ui.WebDriverWait;
    import org.openqa.selenium.support.ui.ExpectedConditions;
    // other code lines
    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[@class='btn btn-block' and @id='smbscheduleobdStep3' and contains(.,'Saved files')]"))).click();
    

    【讨论】:

    • 谢谢..它工作。我在选择下拉菜单时遇到了另一个问题。
    • HTML 是
    • @Nissan 请根据您的新要求提出新问题,StackOverflow 志愿者将很乐意为您提供帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    相关资源
    最近更新 更多