我有一个非常奇怪的问题。使用selenium我正在编写简单的web-bot tring以填充页面数据,提交theam并收集结果。
我填写所有表格都没有任何问题,但我必须首先输入邮政编码,而不是点击其他地方为AJAX列出所有可能性,而不是选择propriate选项(我想总是选择第一个)。
但我的问题是,我根本无法选择它。我填写ZIP,单击选项列表本身,等待“请选择”消息丢失(此时我的选择应该在那里)而不是选择它。我尝试了option.click(),我尝试了selectByVisibleText(),甚至弃用了setSelected()。每次都没有发生。我在FF中看到的只是下拉列表中的选项,标记为第一个,但这就是全部。我尝试了很多方法,根本没有运气。
我的最后一次尝试代码:
ZIPCode = driver.findElement(By.id("formparam_data2_zip")); //get and fill ZIP
ZIPCode.sendKeys(ZIP);
address = driver.findElement(By.name("formparam_data2_zip_id")); // click to fire AJAX
address.click();
(new WebDriverWait(driver, 20)).until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) { // wait until AJAX shows results
WebElement elm = d.findElement(By.id("formparam_data2_zip_id"));
List<WebElement> options = elm.findElements(By.tagName("option"));
for(WebElement w : options){
if(w.getText() != "Prosím, vyberte."){
return true;
}}
return false;
}});
List<WebElement> options = address.findElements(By.tagName("option"));
options.get(0).click(); // click first option - ! this failes !
phaseTwoBtn = driver.findElement(By.id("formparam_data2_next")); // than submit...
phaseTwoBtn.submit();
答案 0 :(得分:1)
我遇到了类似的问题,使用Actions类获得了更好的结果,然后确保在点击之前使用moveToElement()方法。
Actions builder = new Actions(d);
builder.moveToElement(options.get(0)));
builder.click();
builder.build().perform();
moveToElement方法确保元素在可见窗口中
答案 1 :(得分:0)
试试这个
if(!w.getText()。equals(“Prosím,vyberte。”)){ 返回true; }
答案 2 :(得分:0)
请查看this主题...
答案 3 :(得分:0)
使用键盘键我们可以在selenium webdriver .Code中解决这个问题,例如上面的例子,ZIPCode.sendkeys(ZIP); ZIPCode.sendkeys(Keys.Tab); ZIPCode.sendkeys(Keys.Return);