Java 如何在SeleniumWeb驱动程序中从无序列表中选择特定列表项
我试图使用SeleniumWeb驱动程序从UL中选择一个特定的列表项,但是当测试运行时,它找不到元素 我的硒代码: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
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();