java - 有没有办法将变量与 By 连接起来。用于 Java 中的 Selenium Webdriver

标签 java selenium selenium-webdriver

我正在寻找 Java 中的解决方案 - Selenium Webdriver..我创建了一个函数

public WebElement waitforElementCss(String locator)
{
    WebDriverWait wait = new WebDriverWait(driver,10);

    return wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector(locator)));
}

我想做的是,让它像这样动态

public WebElement waitforElementCss(String type, String locator)
{
    WebDriverWait wait = new WebDriverWait(driver,10);

    return wait.until(ExpectedConditions.elementToBeClickable(By.type(locator)));
}

因此,我不是每次都调用 By.CssSelector、Xpath...我希望它从我调用的地方获取参数...我已经在 python 中做到了这一点,但由于某种原因在 Java 中我无法做到这一点..

最佳答案

您不需要为此使用字符串:

public WebElement waitforElement(By locator)
{
    WebDriverWait wait = new WebDriverWait(driver,10);

    return wait.until(ExpectedConditions.elementToBeClickable(locator));
}   

By 已经是定位机制的抽象。您不需要使用 string 使它们更加通用,使用上述方法,如下所示:

waitForElement(By.cssSelector("something"));
waitForElement(By.id("something"));
waitForElement(By.xpath("something"));

而不是:

waitForElement("xpath", "something");
waitForElement("id", "something");
waitForElement("css", "something");

更好,不是吗?例如,如果我拼错“xpath”,您不太可能会遇到手动错误。还使用内置框架类,因此您不会重复工作。

关于java - 有没有办法将变量与 By 连接起来。用于 Java 中的 Selenium Webdriver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26939821/

相关文章:

JavaFX :Open Acrobat Pdf Reader Inside JavaFX Frame

python-3.x - 通过 Selenium 使用 headless ChromeDriver 的透明屏幕截图

python - 在 Python 中使用 Selenium 登录 gmail

java - 测试用例未按照 TestNG xml 中测试类名称的顺序定义执行

java - 无法降低从父级继承的方法的可见性

Java,等待子进程退出

Java编译错误-continue不能在循环外使用

python - 获取或操作 Selenium Webdriver 中的所有 cookie

由于未知协议(protocol) : blob,java.net.URL 类抛出 MalformedException

java - 如何在 Selenium Java Web 驱动程序中选择以下元素?