【问题标题】:Selemium can't find elements on a websiteSelenium 在网站上找不到元素
【发布时间】:2020-03-24 07:45:54
【问题描述】:

我使用的是 C#,但无法从嵌套表的文本框中获取结算日期。你能帮帮我吗?

我尝试了以下方法:-

driver.FindElement(By.Id("settlementdate"))
driver.FindElement(By.Name("settlementdate"));
driver.FindElement(By.Name("//*[@id='settlementdate']");
driver.FindElement(By.Name("//input[@id='settlementdate']");

See below for the html code on the website

【问题讨论】:

  • 您的问题因几个原因而被否决——主要是 HTML 的屏幕截图。这很难阅读(小文本,眼睛紧张),甚至更难以调试,因为没有我们可以测试的 HTML 文本。您还刚刚说您“无法在文本框中获取结算日期”。那是什么意思?是否抛出异常?什么打印到控制台上?什么都没有发生吗?添加这些细节将有助于提高这个问题的质量,你会得到更好的答案。我想回答这个问题,但没有这些细节就无法继续。

标签: c# selenium-webdriver xpath css-selectors webdriverwait


【解决方案1】:

试试 driver.FindElement(By.Xpath("//table/tr/td/input[@id='settlementdate']");

【讨论】:

  • 好的,请将您的HTML添加为代码,这样很容易得到正确的答案
【解决方案2】:

要定位所需的元素,您必须为所需的ElementToBeClickable() 诱导 WebDriverWait,您可以使用以下任一Locator Strategies

  • CssSelector:

    IWebElement element = new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("table#headtable tr td input#settlementdate[name='settlementdate']")));
    
  • XPath:

    IWebElement element = new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//table[@id='headtable']//tr//td//input[@id='settlementdate' and @name='settlementdate']")));
    

【讨论】:

    【解决方案3】:

    感谢您的帮助。我已经设法解决了这个问题。

    输入框在一个框架中,我使用 driver.SwitchTo().Frame() 切换到框架。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-29
      • 1970-01-01
      • 2019-04-16
      • 2016-12-17
      • 1970-01-01
      • 2019-07-12
      • 1970-01-01
      相关资源
      最近更新 更多