Я могу попытаться это очистить. Когда мы говорим «тень», это не означает, что граница тени скорее означает тень вообще для вашего полного контейнера, который является круглым по форме, а тень круга будет круглой, т. Е. Темный черный круг, который вы видите, - это тень контейнера поскольку вы окрашиваете прозрачный контейнер, вы смотрите на его тень, если вы окрашиваете контейнер в красный цвет, вы не увидите тени внутри круга, а увидите цвет, в котором вы рисуете контейнер с красным ime. Я предлагаю вам просто сделать тень, как вы это сделали, и нарисовать контейнер цветом
Theme.of(context).primaryColor
, чтобы получить тот эффект, который вы хотите. а также окрасить родительский контейнер с тем же цветом.
Требуемый элемент выглядит как динамический элемент, поэтому вам нужно вызвать 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();
Решение моего вопроса
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)));
Пометка этого сообщения о решении как решенного, чтобы помочь другим пользователям, если они нуждаются в качестве ссылки для своего сценария.