java - 下拉选项在新选项卡中打开 Selenium
问题描述
它在同一选项卡本身中打开。我想重定向到下一个标签或下一个窗口。
代码:
try
{
for(int i=1;i<=9;i++)
{
if(i==1)
{
System.out.println("No Condition applied");
}
else if(i==2)
{
WebElement menu2=driver.findElement(By.xpath("/html/body/div[2]/div[2]/div/div/ul/li["+i+"]/a"));
Actions action=new Actions(driver);
//It opens in same page
action.moveToElement(menu2).moveToElement(driver.findElement(By.xpath("/html/body/div[2]/div[2]/div/div/ul/li[2]/ul/li["+i+"]/a"))).click().build().perform();
//mouse hover on selected drop down
action.moveToElement(menu2).moveToElement(driver.findElement(By.xpath("/html/body/div[2]/div[2]/div/div/ul/li[2]/ul/li["+i+"]/a"))).build().perform();
//Should open in New Tab-But Not working
action.moveToElement(menu2).moveToElement(driver.findElement(By.xpath("/html/body/div[2]/div[2]/div/div/ul/li[2]/ul/li["+i+"]/a"))).sendKeys(Keys.CONTROL).sendKeys(Keys.ENTER).build().perform();
}
}
}
catch(Exception e)
{
System.out.println("Menu button not found");
}
解决方案
你可以使用Actions
类
WebElement element = driver.findElement(By.xpath("/html/body/div[2]/div[2]/div/div/ul/li[2]/ul/li["+i+"]/a"));
Actions action = new Actions(driver);
action.keyDown(Keys.SHIFT).click(element).keyUp(Keys.SHIFT).build().perform();
作为旁注,不要使用 absolute xpath
,它很脆弱。尽量使用id
/class
属性。
推荐阅读
- javascript - 重新排列 JSON 数据以将 id 添加到嵌套对象
- java - 由于另一个应用程序后台服务,后台服务被杀死
- swift - 在 Alamofire 的参数中发送数组
- java - 关于 Grails 服务类 Singleton 属性
- r - 识别和计算数据帧 R 中的字符串
- php - PHP试图获取非对象自动递增的属性
- fable-f# - 如何在 Fable F# 中预加载图像列表?
- swift - 如何为自定义 UIView 提供设计时布局支持?
- ios - 在 App Store 中将应用从通用更改为仅限 iPhone?
- python - Django 序列化程序的 is_valid 返回 True 即使 validate 返回 False