1

У меня есть требование для двух требований в автоматизации драйверов Selenium Chrome с использованием .net.Как использовать UrlToBe в селене только для части URL-адреса

  1. Ожидание конкретного базового 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-адреса динамически генерируются с некоторыми идентификаторами. Итак, здесь, в моем случае, я хочу сопоставить https://accounts.google.com,

  1. Я хочу получить событие до того, как URL изменится (когда пользователь нажмет на какую-нибудь кнопку, например, следующий). или я хочу получить уведомление, когда пользователь ввел имя пользователя или некоторые записи на веб-странице.

Моя полная требование заключается в следующем,

В первый раз пользователь будет ввести имя, дату рождения вручную в автоматизированном окне. Теперь мое требование - когда пользователь открывает мое приложение для следующего раза, я хочу ввести имя и D.O.B с помощью кода.

Раньше я использовал Internet Explorer, и там у меня было событие forforenavigate, которое сообщит мне, что пользователь перейдет к другому URL-адресу. Поэтому я читал необходимые поля и сохранял их в своей базе данных.

Как это сделать в Selenium или Chrome?

WebElement.getAttribute ('значение') может использоваться для получения значения, но как узнать, что пользователь ввел значения в это поле?

Как я могу достичь этих 2? Пожалуйста, помогите мне.

+1

вы можете поместить 'IsEmpty()' проверить на '' value' getAttribute' ... бы не так помогите подтвердить, введен ли пользователь или нет. Вероятно, когда пользователь выполнил это, что можно проверить с помощью 'listener'. Но, похоже, не очень хорошая практика иметь ручное взаимодействие между ними. – nullpointer

+0

@nullpointer Вы можете объяснить пример? –

ответ

1

Случай 1: Вы не можете, возможно переопределить метод UrlToBe из org.openqa.selenium.support.ui.ExpectedConditions.java, это будучи static метод. Документировано here.

Но что вы можете попытаться сделать, это создать подобный класс и специальный метод, который может быть что-то вроде 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 предварительных действий с учетом действия, которые нужно щелкнуть(), clear() и т. д. на WebElement из списка here. Вы можете переопределить эти методы в 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 
} 
+0

мое намерение - получить имя пользователя, введенное пользователем в автоматическом окне.Есть ли способ наблюдать за полем пользователя и копировать контент до изменения URL-адреса. –

+1

@ITresearcher: Я ожидаю, что это статическое поле, если действие не вызвано, вы не можете сохранить его перед действием. Также, если нет, пожалуйста, обновите то же самое в вопросе, просмотрите детали для конкретного случая. – nullpointer

+0

отредактировал вопрос. Я не понимаю, как узнать, что пользователь что-то ввел. –