Как нажать на поле ввода поиска Office365 Hotmail - PullRequest
0 голосов
/ 18 января 2019

Я создал автоматизацию для открытия электронной почты с помощью поиска адреса электронной почты. Но почему-то я не могу нажать на окно поиска. Я пытался использовать различные XPath, а также с помощью Action оба не удалось. Кто-нибудь может мне помочь?

Я использую браузер Chrome для этого.

enter image description here

Использование действия

Actions ob = new Actions(Driver);
ob.MoveToElement(Driver.FindElement(By.XPath("//*[contains(@aria-label,'Activate Search Textbox')]")));
ob.Click(Driver.FindElement(By.XPath("//*[contains(@aria-label,'Activate Search Textbox')]")));
Actions action = new Actions(Driver);
action.Perform();

Использование элемента Нажмите

private static string SearchIcon = "//*[contains(@aria-label,'Activate Search Textbox')]";
ElementClick(Driver.FindElement(By.XPath(SearchIcon)));

Соответствующий HTML:

<button autoid="_n_4" type="button" class="_n_j ms-bgc-tl-h _n_k ms-bgc-tlr o365button ms-border-color-themeLighter" aria-label="Activate Search Textbox" style="">
<span class="_n_m owaimg ms-Icon--search ms-icon-font-size-20 ms-fcl-ts-b"> </span>
<span class="_n_l ms-fwt-sl ms-fcl-ns ms-fcl-np">Search Mail and People</span>
</button>

Ошибка:

HTTP-запрос к удаленному серверу WebDriver для URL http://localhost:. .. / сессия / c9ac8d163f26dd172417d63f33a65373 / элемент истекло 60 секунд.

Я также проверил, верен ли мой XPath, и он показал правильный enter image description here

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Решение моего вопроса

IWebElement SearchElement = Driver.FindElement(By.XPath("//button[@aria-label='Activate Search Textbox']"));
IJavaScriptExecutor js = (IJavaScriptExecutor)Driver;
js.ExecuteScript("arguments[0].click();", SearchElement);

Каким-то образом при использовании скрипта ниже не удалось поймать элемент драйвером селена.

private static string SearchIcon = "//button[@aria-label='Activate Search Textbox']";
ElementClick(Driver.FindElement(By.XPath(SearchIcon)));

Пометка этого сообщения о решении как решенного, чтобы помочь другим пользователям, если они нуждаются в качестве ссылки для своего сценария.

0 голосов
/ 19 января 2019

Требуемый элемент выглядит как динамический, поэтому вам нужно WebDriverWait для нужного ElementToBeClickable , и вы можете использовать любой из следующих Стратегий локатора как решения:

  • CssSelector:

    new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("button.o365button[aria-label='Activate Search Textbox'] span:nth-child(2)"))).Click();
    
  • XPath:

    new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//button[contains(@class, 'o365button') and @aria-label='Activate Search Textbox']//span[text()='Search Mail and People']"))).Click();
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...