如何在selenium中仅对URL的一部分使用UrlToBe

3lxsmp7m  于 2022-12-26  发布在  其他
关注(0)|答案(2)|浏览(136)

我有一个要求两个要求在 selenium chrome 驱动程序自动化使用. net。
1.正在等待特定的基本URL加载。为此,我得到了下面的代码,如果我给出了确切的URL,它将完美地工作。

wait.Until(ExpectedConditions.UrlToBe("https://accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=https://mail.google.com/mail/&ss=1&scc=1&ltmpl=default&ltmplcache=2&emr=1&osid=1#identifier"))

但我不想给予确切的URL,而是想给出基本URL,因为大多数URL都是使用某些ID动态生成的。因此,在我的示例中,我想匹配https://accounts.google.com
1.我想得到一个事件之前,网址是要改变(当用户点击一些按钮,例如下一步)。或者我想得到通知时,用户已输入的用户名或网页中的一些条目。
我的全部要求如下,
第一次用户将输入用户名,出生日期手动在自动窗口。现在我的要求是当用户打开我的应用程序,下次我想输入姓名和出生日期使用代码。
以前我使用的是Internet Explorer,我有beforavigate事件,这将通知我,用户将导航到其他URL。所以我用来读取必填字段,并将其保存在我的数据库中。
如何在Selenium或Chrome驱动程序中做到这一点?
webElement.getAttribute('value ')可用于获取值,但如何知道用户已将值输入到该字段?
我怎样才能做到这两点?请帮助我。

jchrr9hc

jchrr9hc1#

案例1:你不可能从org.openqa.selenium.support.ui.ExpectedConditions.java覆盖UrlToBe方法,它是一个static方法。

但是,您可以尝试创建类似的类和定制方法,例如CustomExpectedConditions.java

//you provide the base Url here
public boolean UrlContains(String subsetUrl) {
  private String currentUrl = driver.getCurrentUrl();
  return currentUrl != null && currentUrl.contains(subsetUrl);
}

案例2:如果你想跟踪url的预操作,考虑在WebElement上的click(),clear()等操作,你可以在CustomWebDriver类中覆盖这些方法,扩展WebDriver并实现WebElement接口,类似于:

public class CustomWebDriver extends Webdriver implements WebElement {

  @Override
  public void clear() {
    //  save the Url before performing the ops
  }
  // ...similarly for other actions
}
i86rm4rw

i86rm4rw2#

自从Selenium 2.46.0中的Jun 04, 2015以来,我相信我们已经有了urlMatches(),它接受一个regex字符串,可以是一个部分。这至少回答了名称中的问题,也是我为什么来到这里的原因。我使用urlMatches来等待,直到URL变成一个特定的路径,而不是我自己的解决方案。

相关问题