Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在SeleniumWeb驱动程序中从无序列表中选择特定列表项_Java_Selenium Webdriver - Fatal编程技术网

Java 如何在SeleniumWeb驱动程序中从无序列表中选择特定列表项

Java 如何在SeleniumWeb驱动程序中从无序列表中选择特定列表项,java,selenium-webdriver,Java,Selenium Webdriver,我试图使用SeleniumWeb驱动程序从UL中选择一个特定的列表项,但是当测试运行时,它找不到元素 我的硒代码: driver.findElement(By.id("postcode-field")).click(); driver.findElement(By.id("postcode-field")).sendKeys("GL32BN"); driver.findElement(By.id("postcode-field")).submit(); driver.findElement(By

我试图使用SeleniumWeb驱动程序从UL中选择一个特定的列表项,但是当测试运行时,它找不到元素

我的硒代码:

driver.findElement(By.id("postcode-field")).click();
driver.findElement(By.id("postcode-field")).sendKeys("GL32BN");
driver.findElement(By.id("postcode-field")).submit();
driver.findElement(By.id("5000955")).click();
相关HTML:

<ul class="address-list">
<li data-uprn="" data-premise-id="5127035" data-site-id="05">
            1 Pelham Crescent, Gloucester, GL3 2BN
        </li>
<li data-uprn="" data-premise-id="5000955" data-site-id="05">
            2 Pelham Crescent, Gloucester, GL3 2BN
        </li>
  • 1佩勒姆新月会,格洛斯特,GL32亿
  • 2佩勒姆新月会,格洛斯特,GL32亿

这个代码对我来说很好。我不确定你是否尝试过等待

// enter the postcode into the field
driver.findElement(By.id("postcode-field")).sendKeys("GL32BN");
// click the magnifying glass icon to initiate the search
driver.findElement(By.cssSelector("button[data-text-original='Submit']")).click();
// wait for the desired element to be clickable (it takes a fraction of a second to open the dropdown and populate it)
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.cssSelector("li[data-premise-id='5127035']")))
        .click();
// click the next button
driver.findElement(By.id("next")).click();

我在你发布的HTML中没有看到id为“postcode field”或“5000955”的元素。对于第二个问题,我认为您将id误认为是
数据前提id
。如果通过.cssSelector将定位器更改为
(“li[data premise id='5000955']”),应该可以。我试过了,但它似乎仍然无法识别列表中的元素。那么,在选择单个元素之前,我应该定位整个列表吗?这是带有列表的URL。您需要先输入邮政编码。www.virginmedia.com/shop/bundles.htmlI尝试了这个方法,但似乎仍然无法识别列表中的元素。那么,在选择单个元素之前,我应该定位整个列表吗?这是带有列表的URL。您需要先输入邮政编码。这对我有用。你能解释一下这背后的原理吗:driver.findelelement(By.cssSelector(“button[data text original='Submit']))。click();这是一种在识别单个列表元素之前导航到整个列表的方法吗?还有,你怎么知道要包含he wait?我已经在每行代码中添加了注释。如果这不能回答你的问题,请告诉我。我不知道要包括等待,直到它没有工作…:)。我通常认为不需要等待,也不需要添加等待。经验告诉我,有些时候需要等待。我通常不会添加等待,直到非等待代码失败,因为找不到元素等等。如果我认为等待可以解决问题并再次运行,我会进行调查并添加等待。自动化的大部分是反复试验。如果你有更多问题,请告诉我。
// enter the postcode into the field
driver.findElement(By.id("postcode-field")).sendKeys("GL32BN");
// click the magnifying glass icon to initiate the search
driver.findElement(By.cssSelector("button[data-text-original='Submit']")).click();
// wait for the desired element to be clickable (it takes a fraction of a second to open the dropdown and populate it)
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.cssSelector("li[data-premise-id='5127035']")))
        .click();
// click the next button
driver.findElement(By.id("next")).click();