我正在使用firebug查找xpath,这是错误控制台中显示的错误。
没有这样的元素:无法找到 元件:{ “方法”: “的xpath”, “选择器”: “.//*[@ ID = 'SELECT2-CONTACT_ID-结果-v0w5-258']”}
driver.findElement(By.xpath(".//*[@id='select2-contact_id-result-v0w5-258']")).click();
html如下
id="select2-contact_id-result-v0w5-258" class="select2-results__option select2-results__option--highlighted" role="treeitem" aria-selected="false">Single contact
答案 0 :(得分:0)
可能有以下原因: -
可能是您的id
是动态生成的,因此您需要尝试使用不同的定位器来创建By
对象,如下所示
By by = By.className("select2-results__option select2-results__option--highlighted");
或
By by = By.cssSelector(".select2-results__option select2-results__option--highlighted");
或
By by = By.xpath("//*[contains(., 'Single contact')]");
或id
是否未动态生成
By by = By.id("select2-contact_id-result-v0w5-258");
可能是您的元素位于frame
或iframe
内,如果是,则需要在找到元素之前切换frame
或iframe
: -
driver.switchTo().frame("frame id or name or index");
由于互联网速度缓慢,可能是元素未在页面上完全加载,因此您需要实施WebDriverWait
以等待元素可见且可点击,如下所示: -
WebDriverWait wait = new WebDriverWait (driver, 10);
WebElement el = wait.until(ExpectedConditions.elementToBeClickable(by)); //use anyone of the above by object
现在成功获取元素后,您需要执行click
,如下所示: -
el.click();
注意: - 如果您的元素实际上是带有select
标记的下拉列表,那么您需要创建Select()
对象以使用下拉列表,如下所示: -
Select sel = new Select(el);
//now perform step to select an option by visible text from dropdown
sel.selectByVisibleText("your visible option text");
或
sel.selectByIndex("your option index");
或
sel.selectByValue("your option value");
希望它可以帮助你.. :)