如果我在一个主类文件中编写代码,它运行良好,但是当我使用不同的类和方法调用编写代码时,会产生此错误。
堆栈追踪:
10秒后超时{“无法找到元素:{\”method \“:\”xpath \“,\”selector \“:\”(// div [@ class ='item-content'] )[位置()= 3] \ “}”}
代码:
WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(0, 0, 10));
wait.Until(ExpectedConditions.ElementIsVisible(By.XPath("(//div[@class='item-content'])[position()=3]")));
var admi = driver.FindElement(By.XPath("(//div[@class='item-content'])[position()=3]"));
admi.Click();
HTML:
<a href="javascript:void(0)">
<div class="item-content"style="paddingright:10px; padding-top: 5px">
<div class="item-media">
<i style="font-size:20px"class="iconProfile2"></i>
</div>
<div class="item-inner">
<span class="title"> Profile </span>
<i class="icon-arrow" style="margin-top: 3px">
</i>
</div>
</div>
</a>
答案 0 :(得分:1)
可能是你给了错误的XPath或者 尝试以下代码。
WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(0, 0, 30));
wait.Until(ExpectedConditions.ElementExists(By.XPath("(//div[@class='item-content'])[position()=3]")));
var admi = driver.FindElement(By.XPath("(//div[@class='item-content'])[position()=3]"));
admi.Click();
在Firefox浏览器中安装FirePath插件并与Firebug一起使用。 并获得元素的确切firepath,然后执行click事件。 请查看附图中的火道。FirePath use example //检查图片
答案 1 :(得分:1)
我不确定position()=3
是什么,但你的xpath错了。要使用<div>
课程item-content
获取
driver.FindElement(By.XPath("//div[@class='item-content']"));
或者
driver.FindElement(By.ClassName("item-content"));
或使用等待
var admi = wait.Until(ExpectedConditions.ElementIsVisible(By.ClassName("item-content")));
wait.Until
会返回正在等待的WebElement
。
修改
要在列表中按位置选择元素
driver.FindElement(By.XPath("//div[@class='item-content'][3]"));
或者将所有这些内容放在List
中并按索引
IList<IWebElement> elements = driver.FindElements(By.ClassName("item-content")); // note the spelling of FindElements
elements[2].Click();