Селен C # ярлык текст клик - PullRequest
1 голос
/ 19 сентября 2019

У меня есть этот элемент:

<label _ngcontent-c12="" tabindex="0" class="">
    <input _ngcontent-c12="" type="radio" class="ng-untouched ng-valid ng-dirty">
    <span _ngcontent-c12=""></span> TEST
  </label>

и как я могу нажать на него с помощью селена C #?Я пытаюсь:

driver.FindElement(By.XPath("//label[text()='TEST']")).Click();

но это не работает

Ответы [ 2 ]

1 голос
/ 19 сентября 2019

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

  • XPath 1 :

    new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.InvisibilityOfElementLocated(By.XPath("//div[@class='wrapper']")));
    new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//label[contains(., 'TEST')]//input"))).Click();
    
  • XPath 2 :

    new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.InvisibilityOfElementLocated(By.XPath("//div[@class='wrapper']")));
    new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//label[normalize-space()='TEST']//input"))).Click();
    
0 голосов
/ 19 сентября 2019

Возможно, это из-за недостатка места перед «ТЕСТОМ».Вы можете попробовать что-то вроде driver.FindElement(By.XPath("//label[contains(text(),'TEST')]")).Click(); или driver.FindElement(By.XPath("//label[contains(.,'TEST')]")).Click();.

Кроме того, причина может быть в отсутствии WebDriverWait

...