Xpath选择器无法在IE中运行,但在Chrome和Firefox中运行良好

时间:2016-03-20 20:43:30

标签: java selenium selenium-webdriver selenium-ide selenium-chromedriver

我正在使用以下xpath在Selenium webdriver中使用JSExecutor单击元素。这在Firefox和Chrome中运行良好,但在IE中不起作用。

任何想法让这项工作?经过大量的反复试验后,我已经在FF和chrome中完成了这项工作,并提出了以下XPath。

//*[contains(@class,'ui-select-choices-row') or contains(@id,'ui-select-choices-row')]//*[text()='TextofMyElementToBeclicked'

附加信息:这是angularJS应用程序上的Jquery下拉列表。当用户点击下拉//已加载ul并且我正在使用上面的xpath(这是// ul的一部分)来选择基于文本的元素(使用Javascript执行器单击)。我使用了JS执行器,因为selenium中的click()函数根本无法单击下拉元素。

我在下面点击元素。

WebElement element = driver.findElement(By.xpath("YourNumbersXpath"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);
    enter code here

2 个答案:

答案 0 :(得分:1)

我用IE11成功测试了你的XPath,所以它不是与IE相关的问题。这很可能是一个时间问题。首先单击下拉按钮,然后等待目标元素出现,最后单击它:

WebDriver driver = new FirefoxDriver();
WebDriverWait wait = new WebDriverWait(driver, 30);
driver.get("...");

// move the cursor to the menu Product
WebElement element = driver.findElement(By.xpath("drop down button")).click();
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("drop down item"))).click();

答案 1 :(得分:0)

IE11似乎很难与contains(@class,也可能是包含(@id)。尝试使用替代解决方案,例如starts-with。