Как проверить, подписан я или нет, и выполнить действие? в селене c # - PullRequest
0 голосов
/ 29 апреля 2019

Мне нужно выполнить действие, если я подписан на канал YouTube или другой, если я не

Я знаю, что путь кнопки без подписки это

driver.FindElement(By.XPath("//*[@id=\"subscribe-button\"]/ytd-subscribe-button-renderer/paper-button/yt-formatted-string")).Click();

Я написал этот псевдокод, чтобы они лучше понимали

If button subscribe is enabled
click on subscribe
else (If I am subscribed)
continue with the code normally

Перед подпиской:

enter image description here

<yt-formatted-string class="style-scope ytd-subscribe-button-renderer">Subscribe <span class="deemphasize style-scope yt-formatted-string">157K</span></yt-formatted-string>

<paper-button noink="" class="style-scope ytd-subscribe-button-renderer" role="button" tabindex="0" animated="" aria-disabled="false" elevation="0" aria-label="Subscribe to EminemMusic.">
      <yt-formatted-string class="style-scope ytd-subscribe-button-renderer">Subscribe <span class="deemphasize style-scope yt-formatted-string">37M</span></yt-formatted-string>
    <paper-ripple class="style-scope paper-button">


    <div id="background" class="style-scope paper-ripple"></div>
    <div id="waves" class="style-scope paper-ripple"></div>
  </paper-ripple></paper-button>

После подписки:

enter image description here

<yt-formatted-string class="style-scope ytd-subscribe-button-renderer">Subscribed <span class="deemphasize style-scope yt-formatted-string">157K</span></yt-formatted-string>
<paper-button noink="" class="style-scope ytd-subscribe-button-renderer" role="button" tabindex="0" animated="" aria-disabled="false" elevation="0" aria-label="Unsubscribe from EminemMusic." subscribed="">
      <yt-formatted-string class="style-scope ytd-subscribe-button-renderer">Subscribed <span class="deemphasize style-scope yt-formatted-string">37M</span></yt-formatted-string>
    <paper-ripple class="style-scope paper-button">


    <div id="background" class="style-scope paper-ripple"></div>
    <div id="waves" class="style-scope paper-ripple"></div>
  </paper-ripple></paper-button>

Но как мне проверить, подписана ли она уже?

Я не говорю по-английски, извините, если я пишу плохо.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2019

Просто проверьте текст кнопки.

if (subscribeBtn.Text.ToUpper().Contains("SUBSCRIBE"))
{
    subscribeBtn.Click();
}//else
//{
//    Your code here
//}

Надеюсь, это поможет.

0 голосов
/ 29 апреля 2019

Вот простое решение. (Взял метку aria как основу, потому что метка aria начинается с Subscribe to, если она не подписана, если она уже подписана, это будет Unsubscribe from.

if (driver.FindElements(By.XPath("//paper-button[contains(@aria-label,'Subscribe to')]")).size() > 0){
    driver.FindElement(By.XPath("//paper-button[contains(@aria-label,'Subscribe to')]")).click();
}

Вам не нужно другое, так как вы продолжите сценарий, если он уже подписан или подписан как часть вышеприведенного шага.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...