计算单选按钮不使用多个标签名称

时间:2016-02-16 05:35:10

标签: java selenium

enter image description here文件文件=新文件(" 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问题是带有白页,结果为零。原始页面需要一些时间。

please find the link

我想计算单选按钮的数量。 但我无法做到。我尝试通过标签名称找到它,结果为零。 HTML对我的理解有点复杂,因为在单选按钮中,没有输入。因此我找不到input[@type=]

请在这方面帮助我。enter image description here

2 个答案:

答案 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">&nbsp;</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());