我正在使用以下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
答案 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。