首页 > 解决方案 > 无法定位元素方法 XPath 、选择器

问题描述

我不确定为什么它无法识别持有该值的控件。我也尝试了 Class ,但没有成功。任何人都可以让我知道应该做什么。

这是我的代码

    string locator = string.Format("//*[@class='getlist']/div");
    Random elenumber = new Random();
    int num = elenumber.Next(1, 10);
    IWebElement fav = driver.FindElement(By.XPath(locator + "[" + num + "]" + "/div[@class='col-xs-12 col-md-4 col-sm-4 left-hm-contactus-hm']/div/div[@class='col-md-6 fav_hm']/center/form/input[@name='add']"));
    Console.WriteLine(fav);
    fav.Click();
    Thread.Sleep(1000);

这是我得到的错误

OpenQA.Selenium.NoSuchElementException: 'no such element: Unable to locate element: {"method":"xpath","selector":"//*[@class='getlist']/div[1]/div[@class='col-xs-12 col-md-4 col-sm-4 left-hm-contactus-hm']/div/div[@class='col-md-6 fav_hm']/center/form/input[@name='add']"}

标签: c#seleniumselenium-webdriverxpath

解决方案


我能想到两种可能:

  1. 该元素位于 iframe 中,您需要首先在其中访问该 iframedriver.SwitchTo().Frame(frame)

  2. div[@class='col-md-6 fav_hm']<-- 这是一个复合类。据我所知,webdriver 不处理复合类。我建议将其更改为div[contains(@class, 'col-md-6') and contains(@class, 'fav_hm')]与所有其他复合类相同。


推荐阅读