如何使用C#硒解决这一层javascript?

以下是我尝试使用的源代码。我尝试使用以下方法:

driver.FindElement(By.XPath("//span[@data-bind = 'text: Caption']")).Click();
driver.FindElement((By.XPath("//*[contains(text(),'document')]"))).Click();

我在项目中使用的所有常规硒方法都无法找到任何东西。

<div class="caption" data-bind="css: { 'doc-downloader-wrapper': $data.IsDocument() }">
  <a data-bind="css: { 'protected': IsProtectedDocument(),'doc-downloader': $data.IsDocument(),'no-       details': !$data.HasDetails() },attr: { href: Link,target: $data.IsLinkDocument() ? '_blank' :         '_self' }">
    <span data-bind="text: Caption"></span>
  </a>
</div>
vasilyrni 回答:如何使用C#硒解决这一层javascript?

所需元素是动态元素,因此您必须为所需 ElementToBeClickable 引入 WebDriverWait ,并且可以使用以下Locator Strategies作为解决方案:

  • CssSelector

    new WebDriverWait(driver,TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("div.caption[data-bind*='doc-downloader-wrapper']>a[data-bind*='IsProtectedDocument']>span[data-bind$='Caption']"))).Click();
    
  • XPath

    new WebDriverWait(driver,TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//div[@class='caption' and contains(@data-bind,'doc-downloader-wrapper')]/a[contains(@data-bind,'IsProtectedDocument')]/span[contains(@data-bind,'Caption')]"))).Click();
    
本文链接:https://www.f2er.com/3149019.html

大家都在问