Нажатие на кнопку Href селен

#c# #selenium

Вопрос:

В прошлом у меня была дельта с кнопкой Href, и я не находил это слишком сложным, но эта кнопка причиняет боль. Я попытался щелкнуть по xpath, классу и тексту ссылки. Ни один из них не сработал. Я знаю, что существует множество одинаковых вопросов, но большинство из них дают ответ, который я уже пытаюсь. Ниже приведен код, который у меня есть. Единственное, чего я не пробовал, — это javascriptexecutor. Я также нажимал на него в командной строке chrome, и он действительно работает. Просто я тоже не могу получить селен. Он выбрасывает элемент, который не найден. Также я считаю, что стоит отметить, что я не нашел никаких кадров IFRAME, на которые мне нужно переключиться. Единственное, что меня беспокоит, с чем, возможно, у меня нет знаний о селене, чтобы иметь дело, — это упоминания в HTML header , main , section , div , ul , li , и a которые я видел все, кроме ul и li . Спасибо вам за любую помощь, которую кто-то оказывает.

 wait.Until(ExpectedConditions.ElementToBeClickable(By.ClassName("card-header-link float-md-right"))).Click();
 
 wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("/html/body/div[1]/main/section[1]/div/ul/li[5]/a"))).Click(); //full xpath
 
 wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//*[@id='app']/main/section[1]/div/ul/li[5]/a"))).Click();
 
 wait.Until(ExpectedConditions.ElementToBeClickable(By.LinkText("Security"))).Click();
 

HTML

 <li data-v-91f16f3e="">
    <a data-v-91f16f3e="" href="/security" class="">
        <span data-v-91f16f3e="" class="icon icon-shield"></span> 
        <span data-v-91f16f3e="" class="text">Security</span></a>
</li>
 

Ответ №1:

попробуйте этот xpath :

 //span[text()='Security']/..
 

или

 //span[text()='Security']/parent::a[@href='/security']
 

в коде :

 wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//span[text()='Security']/.."))).Click();
 

но странно знать, что By.LinkText("Security") это не сработало.

Обновление 1 :

попробуйте этот css-селектор

  div[class$='desktop'] li a[href$='security']
 

код :

 wait.Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("div[class$='desktop'] li a[href$='security']"))).Click();
 

Ответ №2:

Я вижу href , что значение атрибута в нижнем регистре security , а не Security .
Поэтому, пожалуйста, попробуйте это:

 wait.Until(ExpectedConditions.ElementToBeClickable(By.Xpath("//a[contains(@href,'security')]"))).Click();

 

Комментарии:

1. Ну, он никогда не пробовал хрефа, Security хотя !

2. Но это похоже на By.LinkText() метод

3. нет , текста Security нет security , так By.LinkText("Security") что сработало бы, но это странно.