所以我们有一页医学专科。它原本只是英文的。因此,如果您搜索“neuro”,则HTML看起来类似于
<ul id="ui-id-1" tabindex="0" class="ui-menu ui-widget ui-widget-content ui-autocomplete ui-front" style="width: 476.672px; position: relative; top: -1005px; left: 542.828px; display: none;">
<LI class="ui-menu-item"> Neurology</Li>
<LI class="ui-menu-item"> Neuro Surgeon </li>
</UL>
然后他们添加了西班牙语,所以并不是所有的结果都会返回,但是只有西班牙语是可见的。一个新的
> 添加在底部。
<ul id="ui-id-2" tabindex="0" class="ui-menu ui-widget ui-widget-content ui-autocomplete ui-front" style="width: 476.672px; position: relative; top: -1005px; left: 542.828px; display: none;">
<LI class="ui-menu-item"> Neurologa </LI>
<LI class="ui-menu-item"> Neurologo Cirujano </LI>
</UL>
waitForXpathVisibility("//li[@class='ui-menu-item']");
是否有方法等待任何匹配xpath的元素可见?注意,visibilityOfAllElements()将不起作用,因为它们不会全部可见。
我想可以做的是,预先计算所有带有@id和“width”的元素作为样式的一部分。“Display;none”将不起作用,因为存在具有此值的其他%s。然后进行搜索,等待%s的数目增加1,获取最后一个的id,然后等待
我想你要找的是
//ul[contains(@class,'ui-menu')][last()]/li
^ finds a UL
^ that contains the 'ui-menu' class
^ get the last one (the one that contains visible elements)
^ get the LI children
您应该可以使用VisibilityOfAllElements
等到所有这些都可见。
边注...不要编写仅限于XPath的方法waitForXPathVisibility()
。这使得您必须为您使用的每个定位器类型(CSS选择器、名称、id等)编写一个方法。相反,将by
作为参数并使其泛型化。见下文。
public void waitForVisibilityOfElement(By locator)
{
new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(locator));
}
public void waitForVisibilityOfElements(By locator)
{
new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(locator));
}
By someElementLocator = By.id("someId");
By someElementLocator = By.xpath("//ul[contains(@class,'ui-menu')][last()]/li"); // or this
By someElementLocator = By.cssSelector("ul.ui-menu"); // or this
waitForVisibilityOfElement(someElementLocator);
问题内容: 我想知道是否可以告诉puppeteer等到显示的元素。 我有什么办法可以做到这一点? 问题答案: 我认为您可以为此使用功能。 要检查可用选项,请参阅github链接。
我有一个动态加载的页面,其中包含一个按钮。我正在尝试等待selenium使用C#绑定点击按钮。我有以下代码: 不过这不管用。click事件永远不会被触发。selenium脚本不会抛出异常警告ID为“addInspectionButton”的元素不存在。它只是不能点击它。如果我加一根线。Sleep(3000)在wait语句和我获得按钮元素句柄的那一行之间。 我没有使用预期条件.元素在这里正确点击吗?
我有一个Selenium脚本(Python),它单击一个回复按钮以显示类anonemail。类anonemail显示所需的时间各不相同。因此,在元素出现之前,我必须使用sleep。 我想等到类已经出现,而不是使用睡眠。我听说过等待命令,但我不知道如何使用它们。 这是我到目前为止所拥有的:
我想等到DOM稳定,页面被构造,然后再尝试执行SeleniumWebDriver click()方法。 由于Selenium 2,似乎不再存在stock wait_for()方法。Selenium和Python2的“等待15秒或直到元素可点击”风格行为的最佳实践是什么?
同时点击一个特定的按钮-我的测试站点将打开模式窗口。 我找不到更好的方法等到任何一个都可见的时候。 你能提出一个解决这种情况的方法吗?
2)使用了显式wait(WaitForelementPresent/WaitForVisible/ElementTobeClickable/wait for invisibility of element等)(所有可能的尝试) 3)使用Java脚本(window.angular.element('body').injector().get('$http').PendingRequests.Leng