将密钥发送到字段后,我无法单击autoCompletion选项。 我能够列出它们,找出我想要选择的那个,但显然有些不对劲。这是规格,
我希望能够在“注册”中选择此网页的“位置”字段“https://supercareer.com/home/company”,我选择,发送密钥,点击建议的位置,但它不会选择选项。我在Java控制台上没有任何错误。
我用来选择自动完成功能的功能:
public static void autoCompleteOptionSelector(String autoCompleteSearchText,String selection){
WebElement autoOptions= driver.findElement(By.xpath("/html/body/div[3]/div[2]/div[3]/form/div[2]/div[2]/div[3]/span[1]/input"));
autoOptions.sendKeys(autoCompleteSearchText);
List<WebElement> optionsToSelect = driver.findElements(By.xpath("//div[@class='tt-suggestion tt-selectable']"));
System.out.println("Size of the AutoSuggets is = " + optionsToSelect.size());
//I print options till match with exact option I want. and then Click
for(WebElement option : optionsToSelect){
System.out.println(option);
System.out.println("Values are = " + option.getText());
if(option.getText().equals(selection)) {
System.out.println("Trying to select: "+ selection);
option.click();
break;
}
}
}
这是我的主要功能,CaseFunctions是上述功能的类:
WebDriver dr = new FirefoxDriver();
CaseFunctions.autoCompleteOptionSelector("18661","White Haven, PA 18661, United States");
这是我的输出没有错误,但在网页上我无法选择。
控制台输出:
AutoSuggets的大小= 5
[[FirefoxDriver:WINDOWS上的firefox(b676fd34-8272-47c7-b0bc-14aace352dd6)] - &gt; xpath:// div [@ class ='tt-suggestion tt-selectable']]
值为= White Haven,PA 18661,United States
尝试选择:White Haven,PA 18661,United States
对我来说一切都很好。
答案 0 :(得分:0)
我猜,除了if里面的条件外,一切都是正确的。我们需要使用contains而不是equals。下面的代码可能会给你一些想法。
if(option.getText().contains(selection))
{
System.out.println("Trying to select: "+ selection);
option.click();
break;
}
完整代码:
public static void main(String[] args)
{
System.setProperty("webdriver.chrome.driver", "/home/santhoshkumar/Softwares/Selenium/drivers/chromedriver2.29");
WebDriver driver = new ChromeDriver();
driver.get("https://supercareer.com/home/company");
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
driver.findElement(By.xpath("//*[@id=\"AnonymousHeader1\"]/div/div[2]/div/div/a[1]")).click();
WebElement autoOptions= driver.findElement(By.xpath("/html/body/div[3]/div[2]/div[3]/form/div[2]/div[2]/div[3]/span[1]/input"));
autoOptions.sendKeys("18661");
List<WebElement> optionsToSelect = driver.findElements(By.xpath("//div[@class='tt-suggestion tt-selectable']"));
System.out.println("Size of the AutoSuggets is = " + optionsToSelect.size());
//I print options till match with exact option I want. and then Click
for(WebElement option : optionsToSelect)
{
System.out.println(option);
System.out.println("Values are = " + option.getText());
if(option.getText().contains("White Haven, PA 18661, United States"))
{
System.out.println("Trying to select: "+ "White Haven, PA 18661, United States");
option.click();
break;
}
}
}
希望这会对你有所帮助。感谢。
答案 1 :(得分:0)
您可以尝试使用JavaScript执行程序单击该选项吗?请用以下代码替换代码option.click()。
JavaScriptExecutor js = (JavaScriptExecutor) driver;
js.executeScript ("arguments [0].click ()", option);
答案 2 :(得分:0)
尝试了许多事情并尝试了一些关于“Santhosh Kumar”的友好建议(无论如何都要感谢)。
这个东西解决了firefox的问题,但我仍然想知道为什么?因为对于任何其他情况,在此位置自动填充字段之前,Firefox驱动程序中从未出现过此类问题。
DesiredCapabilities capability = DesiredCapabilities.firefox();