【问题标题】:How to use *Hot Code Replacement* to correct my xpath of it is incorrect如何使用 *Hot Code Replacement* 来纠正我的 xpath 不正确
【发布时间】:2016-04-04 18:19:04
【问题描述】:

我正在使用 SeleniumJavaEclipse Mars 编写测试。我决定使用 Hot Code Replacement 来调试我的 selenium 测试。我决定使用 HCR 的主要原因是获取我的定位器(例如:WebElement searchBox = driverChrome.findElement(By.xpath("bla bla"));)并尝试 xpath 以查看它是否有效,如果没有,我更改它,保存并再次尝试而不运行整个测试。

我有这个问题,当我更改某些内容并单击保存时,它会显示:

在下面找到我的示例代码:

public static void main(String[] args) throws InterruptedException {
        System.setProperty("webdriver.chrome.driver", "Chrome Drivers\\chromedriverWindows32");
        try {
            WebDriver driverChrome = new ChromeDriver();
            driverChrome.get("http://www.google.com/xhtml");
            driverChrome.manage().window().maximize();
            String name = "bla bla";
            driverChrome.findElement(By.name(name)).click();
            Thread.sleep(2000); // Let the user actually see something!
            driverChrome.quit();
        } catch (Exception e) {         
            e.printStackTrace();
        }
    }

【问题讨论】:

标签: java debugging selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

更新了更多细节

热代码替换不适用于每种代码情况。考虑将 XPath 设置为字符串变量,然后在调试过程中修改该变量的值。

例如:

@Test
public void changeExpression() throws Exception {
    WebDriver browser = new FirefoxDriver();
    browser.get("http://google.com");
    WebElement searchBtn = 
            browser.findElement(By.xpath("*//form//input[@value='Google Search']"));
    //do other stuff...
    browser.quit();
}

现在在 WebElement searchBtn ... 语句上设置断点。在调试模式下运行测试。跳过断点,以便执行 browser.findElement 语句。您将有一个初始化的 WebElement searchBtn 或一个异常,因为 xpath 无效。

现在您可以在 Eclipse 中打开 Expressions 窗口(Window -> Show View => Other => Expressions)。

您可以在此处编辑 find 语句,特别是 xpath 语句。

坦率地说,如果您只是想验证 Xpath,那么在 Chrome、IE 或 Firefox 中使用开发工具会容易得多:

HTH

【讨论】:

  • 对不起,我意识到我可能不太清楚:在调试模式下使用表达式窗口更改变量的值。它与热代码更新略有不同。您可以使用表达式窗口来评估/测试查找逻辑、步骤等。
  • 但是在通过定位器并确定它是错误的之后,我该如何回过头来查看我在表达式窗口中分配给bannerXpath的新值是否有效?
  • 感谢您的帮助,非常有帮助。我的问题是:如果我发现 xpath 错误,然后我通过那个 Expression 窗口更改了它,我怎样才能回到断点以便再次执行 browser.findElement 语句?
猜你喜欢
  • 2021-03-07
  • 2020-01-27
  • 2012-11-10
  • 2015-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-17
相关资源
最近更新 更多