webDriverWait
は、いくつかの要素の1つが表示されるのを待って、どの要素が表示されるかに応じて動作する方法がありますか?webdriverは複数の要素の1つが表示されるのを待つ
現在、私はWebDriverWait
をtryループ内で行い、タイムアウト例外が発生した場合は、他の要素が表示されるのを待つ代替コードを実行します。これは不器用なようです。より良い方法がありますか?ここに私の(不器用)のコードは次のとおりです。
try:
self.waitForElement("//a[contains(text(), '%s')]" % mime)
do stuff ....
except TimeoutException:
self.waitForElement("//li[contains(text(), 'That file already exists')]")
do other stuff ...
それはメッセージファイルがすでにシステム上に存在するかどうかを確認します前に、全体の10秒を待っているが含まれます。
機能waitForElement
はちょうどそうのようなWebDriverWait
コール数ん:誰もが、より効率的な方法でこれを達成する任意の提案を
def waitForElement(self, xPathLocator, untilElementAppears=True):
self.log.debug("Waiting for element located by:\n%s\nwhen untilElementAppears is set to %s" % (xPathLocator,untilElementAppears))
if untilElementAppears:
if xPathLocator.startswith("//title"):
WebDriverWait(self.driver, 10).until(lambda driver : self.driver.find_element_by_xpath(xPathLocator))
else:
WebDriverWait(self.driver, 10).until(lambda driver : self.driver.find_element_by_xpath(xPathLocator).is_displayed())
else:
WebDriverWait(self.driver, 10).until(lambda driver : len(self.driver.find_elements_by_xpath(xPathLocator))==0)
得ましたか。そのような
に教えることができるように、「またはステートメント」パスのどれが使用されたかを識別することです。それはうまくいくでしょう。 – amadain