Firefox
超时。
从www.usps.com开始,以下xpath
- //a[.='Mail & Ship']
后跟//a[.='Calculate a Price']
会打开https://postcalc.usps.com/
上述内容适用于IE和Chrome。然而在FF中它超时 -
预期条件失败:等待位于元素的可见性 By By.xpath://a [。='计算价格']
使用的代码是
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xpath))).click();
使用Firepath
,我看到//a[.='Calculate a Price']
有两个匹配,第一个隐藏在QuickTools菜单下。在测试执行期间,当我手动单击QuickTools菜单以显示"计算价格"时,测试继续进行。
这是一个错误吗?或者这是预期的行为? 有解决方法吗?
非常感谢!
答案 0 :(得分:0)
当您使用driver.find_element_by_xpath(xpathgoeshere)
时,单数" find_element"意味着selenium将找到与您的参数匹配的第一个xpath,并停在那里。在这种情况下,带有该xpath的第一个元素是隐藏的,所以等到它变为可见时不会发生。
有几种解决方法。我认为最简单的方法是找到你想要使用的元素的唯一xpath。
//a[.='Calculate a Price']
可以是以下任何元素:
<a class="quick-tools--link quick-tools--calcprice" href="https://postcalc.usps.com/">Calculate a Price</a>`
<a class="left-nav--link firepath-matching-node" href="/calculateretailpostage/welcome.htm" target="">Calculate a Price</a>`
<a class="menu--tier-two-link" href="https://postcalc.usps.com/">Calculate a Price</a>`
您可以通过向Xpath添加第二个选择器来指定哪一个:
//a[.='Calculate a Price' and @class='quick-tools--link quick-tools--calcprice']
//a[.='Calculate a Price' and @class='menu--tier-two-link']