我正在自动添加“http://www.fnp.com/the-sweet-surprises-genpr-143431-e.html”网站的卡片处理流程。我正在使用TestNG Structure编写代码。我陷入了困境,我陷入了“运输选项”框。 我在控制台中获得null值。 以下是我的testNG计划
package script;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import pom.Homepage_POM;
public class mis {
public static WebDriver driver;
public static void main(String a[])
{
driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get("http://www.fnp.com/the-sweet-surprises-genpr-143431-e.html");
driver.findElement(By.id("tagsf2")).sendKeys("Gandhinagar");
String xp = "//ul/li/a[@class='ui-corner-all']";
List<WebElement> allList = driver.findElements(By.xpath(xp));
int count = allList.size();
for (int i = 0; i < count ; i++)
{
String name = allList.get(i).getText();
//System.out.println(name);
if(name.contains("Gandhinagar"))
{
allList.get(i).click();
break;
}
}
List<WebElement> allElements = driver.findElements(By.xpath("//div[@id='ddShipingModep1_container']/ul/li"));
for (int i = 0; i < allElements.size() ; i++)
{
String name2 = allElements.get(i).getText();
System.out.println(name2);
if(name2.contains("Standard Delivery [ Rs. 0 ]"))
{
allElements.get(i).click();
break;
}
以下是HTML代码
<div class="textbox">
<div id="plsenter" style="display:none">Only standard delivery available for Mother's Day</div>
<div id="anand" class="pro_detail_form_inn flot-right">
<label>2. Shipping option</label>
<input id="ddShipingModep1_input" class="selectbox" type="text" autocomplete="off" readonly="readonly"/>
<div id="ddShipingModep1_container" class="selectbox-wrapper" style="display: none; width: 274px;">
<ul>
<li id="ddShipingModep1_input_option1" class="">Select Shipping Mode</li>
<li id="ddShipingModep1_input_SHMD-10" class="">Standard Delivery [ Rs. 0 ]</li>
<li id="ddShipingModep1_input_SHMD-768" class="selected">Fix Time Delivery [ Rs. 200 ]</li>
<li id="ddShipingModep1_input_SHMD-781">Midnight Delivery [ Rs. 250 ]</li>
</ul>
</div>
<select id="ddShipingModep1" class="inp_pop_quick_view" onchange="changeShipmentTime()" name="Items" style="display: none;">
<input id="valentineDisabled" type="hidden" value="false"/>
<input id="isValentinerose" type="hidden" value="false"/>
</div>
答案 0 :(得分:1)
WebDriver driver=new FirefoxDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get("http://www.fnp.com/the-sweet-surprises-genpr-143431-e.html");
driver.findElement(By.id("tagsf2")).sendKeys("Gandhinagar");
/ *以下三行代码是选择&#34; Gandhinagar&#34;从城市名称* /
的下拉框中WebElement selectShippingModeInput = driver.findElement(By.id("ddShipingModep1_input"));
selectShippingModeInput.click();
selectShippingModeInput = driver.findElement(By.id("ddShipingModep1_input"));
selectShippingModeInput.click();
/ *以下代码 从下拉框中获取&#34;送货选项&#34; * /
的所有选项List<WebElement> options=driver.findElements(By.xpath("//div[@id='ddShipingModep1_container']/ul/li"));
for(WebElement option:options){
/ *以下代码提取下拉项目* /
的文本String name=option.getText();
/ 以下两行代码将重点放在选择框 /
上 selectShippingModeInput = driver.findElement(By.id("ddShipingModep1_input"));
selectShippingModeInput.click();
/ *下拉项目&#34;标准交付[卢比。从下拉框中选择0] * /
if(name.equals("Standard Delivery [ Rs. 0 ]")){
selectShippingModeInput.click();
option.click();
break;
}
}
答案 1 :(得分:0)
您必须单击<input id="ddShipingModep1_input"
两次,然后才会显示选项。请参阅以下代码:
...
WebElement selectShippingModeInput = driver.findElement(By.id("ddShipingModep1_input"));
selectShippingModeInput.click();
selectShippingModeInput = driver.findElement(By.id("ddShipingModep1_input"));
selectShippingModeInput.click();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
List<WebElement> allElements = driver.findElements(By.xpath("//div[@id='ddShipingModep1_container']/ul/li"));
...