#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")
что сработало бы, но это странно.