文件文件=新文件(" D:\ Selenium 2.48 \ IEDriverServer.exe");
System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
WebDriver driver=new InternetExplorerDriver();
driver.get("http://www.yatra.com/");
driver.manage().window().maximize();
List<WebElement> radio = driver.findElements(By.tagName("a"));
System.out.println(radio.size());
这里是新代码,我现在可以使用xpath.thanks for it.But问题是带有白页,结果为零。原始页面需要一些时间。
我想计算单选按钮的数量。
但我无法做到。我尝试通过标签名称找到它,结果为零。
HTML对我的理解有点复杂,因为在单选按钮中,没有输入。因此我找不到input[@type=]
等
答案 0 :(得分:1)
您应找到这些比率的正确指标
建议您使用此xpath
//a[@data-flighttrip]
这是我的剧本
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
public class TestSelenium {
static WebDriver driver;
public static void main(String[] args) throws Exception {
System.setProperty("webdriver.chrome.driver", "res/chromedriver.exe");
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
driver = new ChromeDriver(capabilities);
driver.get("http://www.yatra.com/");
List<WebElement> radio = driver.findElements(By.xpath("//a[@data-flighttrip]"));
System.out.println(radio.size());
driver.quit();
}
}
此处的控制台输出
Starting ChromeDriver (v2.9.248315) on port 14427
3
尝试使用IEDriver
import java.io.File;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
public class TestSelenium {
static WebDriver driver;
public static void main(String[] args) throws Exception {
File file = new File("D:\\IEDriverServer.exe");
System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
DesiredCapabilities cap = DesiredCapabilities.internetExplorer();
cap.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
WebDriver driver=new InternetExplorerDriver(cap);
driver.get("http://www.yatra.com/");
driver.manage().window().maximize();
List<WebElement> radio = driver.findElements(By.xpath("//a[@data-flighttrip]"));
System.out.println(radio.size());
driver.quit();
}
}
结果
Started InternetExplorerDriver server (64-bit)
2.52.0.0
Listening on port 6267
Only local connections are allowed
3
答案 1 :(得分:0)
我认为你需要等待事情安定下来并通过WebDriverWait
加载页面:
WebDriverWait wait = new WebDriverWait(webDriver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div.trip-type")));
在这里,我们正在等待行程类型容器变为可见,我认为这是一个很好的迹象,表明至少已加载了页面的相关部分。
然后,您可以计算链接:
List<WebElement> radio = driver.findElements(By.tagName("a"));
System.out.println(radio.size());
请注意,在您的情况下,radiobuttons实际上不是HTML无线电输入元素 - 这些只是前面的&#34; radiobutton&#34;类似图标的链接:
<a class="type-active" href="javascript:void(0);" data-flighttrip="O">
<i class="sprite-booking-engine ico-be-radio"> </i>
One Way
</a>
因此,如果您想在页面的任何位置计算这些类型的链接,您可以使用以下XPath表达式检查i
子元素是否存在ico-be-radio
类:
List<WebElement> radio = driver.findElements(By.xpath("//a[contains(i/@class, 'ico-be-radio')]"));
System.out.println(radio.size());
但是,如果你想查看多少&#34;旅行类型&#34;链接在那里,只需获取&#34;旅行类型&#34;中的所有a
元素容器:
WebDriverWait wait = new WebDriverWait(webDriver, 10);
WebElement tripType = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div.trip-type")));
List<WebElement> radio = tripType.findElements(By.tagName("a"));
System.out.println(radio.size());