我不确定为什么它不能识别包含该值的控件。我也尝试过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']"}
答案 0 :(得分:0)
我可以想到两种可能性:
该元素位于iframe中,您需要首先使用driver.SwitchTo().Frame(frame)
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的随机数,并且每次都会给出随机元素。