【问题标题】:Make selenium code with a lot of XPath-s more readable使用大量 XPath-s 使 selenium 代码更具可读性
【发布时间】:2019-06-05 05:09:08
【问题描述】:

我注意到,当我使用 selenium Web 驱动程序与网页上的元素进行交互时,我的代码变得不可读,因为我使用了很多 XPath-s 来查找这些元素。例如:

driver.FindElement(By.XPath("//div[@class='login']//a[@href='#']"), Globals.TIMEOUT).Click();
var loginField = driver.FindElement(By.XPath("//div[@id='login_box']//input[@name='login_name']"));
jdriver.ExecuteScript("arguments[0].setAttribute('value', '" + login + "')", loginField);
var passwordField = driver.FindElement(By.XPath("//div[@id='login_box']//input[@name='login_password']"));
jdriver.ExecuteScript("arguments[0].setAttribute('value', '" + password + "')", passwordField);
driver.FindElement(By.XPath("//div[@id='login_box']//input[@type='submit']")).Click();
driver.FindElement(By.XPath("//div[@class='nameuser']"), Globals.TIMEOUT);
我认为我可以将 XPath 值放入常量字符串中,但是在阅读代码时查看元素的实际 XPath 非常有帮助。但另一方面,当某些对象的 XPath 发生更改时,我必须在所有使用它的地方更改它。 那么这个问题的最佳解决方案是什么?

【问题讨论】:

标签: c# selenium xpath readable


【解决方案1】:

使用 Selenium Page Object Model using Page factory。有助于保持代码整洁,提高代码的可读性。

【讨论】:

    【解决方案2】:

    创建一个页面对象文件。

    例如,如果您经常使用像"//div[@id='login_box']//input[@type='submit']" 这样的xPath,请在页面对象文件中放置:

    var loginSubmit = "//div[@id='login_box']//input[@type='submit']"
    

    然后在你的主文件中导入页面对象文件:

    using myPageObjectFile
    
    driver.FindElement(By.XPath(myPageObjectFile.loginSubmit));
    

    我的 C# 不是很好,所以它可能不完全是这样。但这种效果应该有效。

    这样当xPath发生变化时,只需要在页面对象文件中进行调整即可。

    【讨论】:

      猜你喜欢
      • 2012-06-14
      • 2012-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多