无法找到元素方法XPath选择器

时间:2019-11-05 10:40:05

标签: c# selenium selenium-webdriver 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']"}

2 个答案:

答案 0 :(得分:0)

我可以想到两种可能性:

  1. 该元素位于iframe中,您需要首先使用driver.SwitchTo().Frame(frame)

  2. 访问该iframe
  3. div[@class='col-md-6 fav_hm'] <-是复合类。从我记得,webdriver不处理复合类。我建议将其更改为与所有其他复合类相同的div[contains(@class, 'col-md-6') and contains(@class, 'fav_hm')]

答案 1 :(得分:0)

尝试使用此代码。

 String myXpath = "//*[@class='getlist']/div[" + 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']";
    IWebElement fav = driver.findElement(By.xpath(myXpath));

这也是非常大和糟糕的xpath。共享您尝试使用的Web网址和Web元素名称,也许我可以给更好的xpath,它将使用从1到10的随机数,并且每次都会给出随机元素。