【问题标题】:cant access element inside divs无法访问div内的元素
【发布时间】:2019-12-19 13:41:52
【问题描述】:

当我点击 button 1 时使用 Selenium C# 会抛出 NoSuchElementException

我试过了:

driver.FindElement(By.XPath("/html/body/div[2]/div[2]"));

driver.SwitchTo().Frame(0);

new WebDriverWait(driver, TimeSpan.FromSeconds(10))
.Until(SeleniumExtras.WaitHelpers.ExpectedConditions
.ElementExists((By.Id("hello-button"))));

[![HTML 已附加][1]][1]

[1]:

【问题讨论】:

    标签: c# google-chrome selenium-webdriver


    【解决方案1】:

    由于按钮具有唯一的id,您应该使用它,而不是 XPath:

    driver.FindElement(By.Id("hello-button")).Click();
    

    或者,如果它是页面上的唯一按钮

    driver.FindElement(By.XPath(".//button")).Click();
    

    【讨论】:

    • 是的,之前也尝试过,给出错误::没有这样的元素:无法找到元素:{"method":"id","selector":"hello-button"}
    • @Nina 请问,你为什么要切换框架?你真的要切换到框架0 吗?您是否在不同的 iframe 中开始测试?也许你在错误的框架上,驱动程序找不到按钮。
    • 我只是列出了我尝试过的不同的东西。因为有嵌套的 div,我读到了关于切换帧的内容,所以也尝试了。不工作......不再使用框架......只有第一行工作 driver.FindElement(By.XPath("/html/body/div[2]/div[2]"));这意味着它可以转到div。但无法访问 div 内的按钮。
    • @Nina 可以提供页面的网址吗?
    • @Nina 所以找到了按钮!它不可交互,但这是另一个问题。可能有很多原因。我会检查按钮是否可见,driver.FindElement(By.XPath(".//button")).Displayed。如果为 false,则表示该元素的大小为零。
    猜你喜欢
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-24
    • 1970-01-01
    • 2019-06-14
    相关资源
    最近更新 更多