我试图通过从excel读取下拉值来选择下拉值。我尝试了下面的代码,但它没有根据excel表中提到的数据选择值。对我来说,所有数据都在相应字段中正确填充,但性别下拉除外。
以下是HTML代码和UI的屏幕截图:
以下是我的HTML代码:
<td class="codetable last-cell" headers="N224AA-4-2">
<div id="widget___o3id7" class="dijit dijitReset dijitInline dijitLeft codetable dijitTextBox dijitComboBox" lang="en-US" role="listbox" dir="ltr" widgetid="__o3id7" aria-expanded="false">
<div class="dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton dijitArrowButtonContainer" role="presentation" data-dojo-attach-point="_buttonNode, _popupStateNode" popupactive="true">
<input class="dijitReset dijitInputField dijitArrowButtonInner" type="text" role="presentation" readonly="readonly" tabindex="-1" value="▼ ">
</div>
<div class="dijitReset dijitValidationContainer">
<input class="dijitReset dijitInputField dijitValidationIcon dijitValidationInner" type="text" role="presentation" readonly="readonly" tabindex="-1" value="Χ ">
</div>
<div class="dijitReset dijitInputField dijitInputContainer">
<input id="__o3id7" class="dijitReset dijitInputInner" type="text" aria-haspopup="true" role="textbox" data-dojo-attach-point="textbox,focusNode" autocomplete="off" aria-required="true" tabindex="0" title="Gender Mandatory" size="1" value="Male" aria-owns="__o3id7_popup" aria-activedescendant="__o3id7_popup1">
<input type="hidden" name="__o3id7" value="SX1">
</div>
</div>
</td>
我在excel表中填写了测试数据,如下所示&#34;女性&#34;是下拉值:
UserName password123 100000005 Elena Sawyerehde Female
以下是我的代码:
package com.access;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.Select;
import org.testng.Assert;
import org.testng.annotations.*;
import java.io.FileInputStream;
import jxl.Sheet;
import jxl.Workbook;
public class Registration {
static WebDriver driver;
@BeforeMethod
public void setUp() throws Exception {
System.setProperty("webdriver.chrome.driver", "C:\\Directory\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
Thread.sleep(2000);
}
@Test
public void TestCase1() throws Exception {
FileInputStream fi=new FileInputStream("C:\\File\\Book2.xls");
Workbook w=Workbook.getWorkbook(fi);
Sheet s=w.getSheet(0);
driver.get("https://example.com");
try
{
for (int i = 0; i < s.getRows(); i++)
{
//Read data from excel sheet
String s1 = s.getCell(0,i).getContents();
String s2 = s.getCell(1,i).getContents();
String s3 = s.getCell(2,i).getContents();
String s4 = s.getCell(3,i).getContents();
String s5 = s.getCell(4,i).getContents();
String s6 = s.getCell(5,i).getContents();
driver.findElement(By.xpath("html/body/div[2]/form/input[1]")).sendKeys(s1);
Thread.sleep(2000);
driver.findElement(By.xpath("html/body/div[2]/form/input[2]")).sendKeys(s2);
Thread.sleep(2000);
driver.findElement(By.xpath("html/body/div[2]/a/span/span/span")).click();
Thread.sleep(2000);
Assert.assertEquals("Testing Hub", driver.findElement(By.xpath("//*[@id='app-banner']/div[1]/div/h2")).getText());
Thread.sleep(2000);
driver.findElement(By.xpath("html/body/div[1]/div[4]/div[1]/div[4]/div/div[2]/div/div/div/span[1]")).click();
Thread.sleep(2000);
driver.findElement(By.xpath("html/body/div[1]/div[4]/div[3]/div[2]/div[3]/div[3]/div[1]/div/div[2]/div/div/div/span/span/span/span[2]")).click();
Thread.sleep(1000);
driver.findElement(By.xpath("html/body/div[4]/table/tbody/tr[2]/td[2]")).click();
Thread.sleep(2000);
driver.switchTo().frame("iframe-curam_ModalDialog_0");
Thread.sleep(1000);
driver.findElement(By.xpath("//*[@id='__o3id0']")).sendKeys(s3);
Thread.sleep(1000);
driver.findElement(By.xpath("html/body/div[3]/form/div/div[5]/a[1]/span/span/span")).click();
Thread.sleep(1000);
Assert.assertEquals("There are no matching items based on the Search Criteria entered.", driver.findElement(By.xpath("html/body/div[3]/div/ul/li/div")).getText());
Thread.sleep(1000);
driver.findElement(By.xpath("html/body/div[4]/div[2]/a/span/span/span")).click();
Thread.sleep(2000);
driver.findElement(By.xpath("html/body/div[3]/form/div/div[2]/div/table/tbody/tr[1]/td[1]/input")).sendKeys(s4);
Thread.sleep(1000);
driver.findElement(By.xpath("html/body/div[3]/form/div/div[2]/div/table/tbody/tr[2]/td[1]/input")).sendKeys(s5);
Thread.sleep(1000);
new Select(driver.findElement(By.id("___o3id7"))).selectByValue(s6);
Thread.sleep(2000);
}
}
catch(Exception e)
{
System.out.println(e);
}
}
}
答案 0 :(得分:0)
由于您粘贴的代码中没有选择标记,因此使用select
点击下拉列表无法获得帮助。
根据您的测试脚本和Html代码,下拉列表的id
值不同。
//*[@id='widget___o3id7']
- 在xpath中用于选择下拉列表,在html代码id = "__o3id7"
中。
更改后尝试
最好分享您的用户界面以了解情景并得出结论
感谢您分享用户界面和HTML代码。
driver.findElement(By.id("__o3id7")).click();
Thread.sleep(1500);
driver.findElement(By.xpath("//*[contains(text(),'Female')]")).click();
替换您的select
语句并尝试使用此代码。让我们希望这会点击女性&#39;从你的下拉。