如何使用C#selenium绕过这一层javascript?

如何使用C#selenium绕过这一层javascript?,c#,selenium-webdriver,xpath,webdriverwait,C#,Selenium Webdriver,Xpath,Webdriverwait,下面是我尝试使用的源代码。我曾尝试使用以下方法: driver.FindElement(By.XPath("//span[@data-bind = 'text: Caption']")).Click(); driver.FindElement((By.XPath("//*[contains(text(),'document')]"))).Click(); 我在项目中使用的所有传统硒方法都没有找到任何东西 所需元素是一个动态元素,因此您必须将所需元素的WebDriverWait诱导为可访问,并且

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

driver.FindElement(By.XPath("//span[@data-bind = 'text: Caption']")).Click();
driver.FindElement((By.XPath("//*[contains(text(),'document')]"))).Click();
我在项目中使用的所有传统硒方法都没有找到任何东西


所需元素是一个动态元素,因此您必须将所需元素的WebDriverWait诱导为可访问,并且您可以使用以下任一解决方案:

  • css选择器

    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();
    

可能重复您是否厌倦了使用
操作
?我不熟悉Selenium C,因此这可能是一个愚蠢的建议。你能用CSS选择器选择吗?e、 g.
document.querySelector('span[data bind=“text:Caption”]”)
谢谢!我要试一试。