我有一个用Python编写的Selenium脚本。我尝试访问的网页将有两种可能的结果之一:
我需要等待这些条件中的任何一个成为真。如果满足这些条件中的任何一个,我将简单地提取页面源并退出。在
我可以分别等待以下条件:
element1 = WebDriverWait(driver, 10).until(EC.text_to_be_present_in_element((By.ID, "nodataID"), "data not found"))
if element1:
content = driver.page_source.encode('utf-8')
driver.quit()
element2 = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "dataID")))
if element2:
content = driver.page_source.encode('utf-8')
driver.quit()
这意味着Selenium将首先等待查看网页是否没有所需的数据。在这种情况下,它将获得页面源并退出。但是如果这个条件不满足,那么它将继续等待10秒,看看第二个条件是否满足。在
这种方法的问题是,我不确定第一个条件,如果是真的,将在10秒钟内满足。也就是说,我可能会等待10秒,如果第一个条件不满足,那么我将移动一个来查找第二个条件。但可能第一个条件是真的,在第十一秒就实现了。在这种情况下,我的脚本永远不会知道第一个条件已经实现。如果我切换两个wait语句的顺序,那么问题仍然存在,因为现在我仍然不确定要等多久才能使新的第一个条件为真。在
这种方法的另一个问题是,即使第二个条件在2-3秒内得到满足,它也要等待10秒才能满足第一个条件。因此,当网页的第二个条件为真时,会浪费等待时间。在
所以,我需要写一个等待,等待这两个条件中的任何一个为真。在
我回顾了其他几个Stackoverflow问题,并试图想出一个解决方案,但我没能解决。我尝试用逗号(,)或| |或or关键字组合这两个条件。但这些都不能解决问题。在
有人能给我指一下正确的方向吗?在
您可以使用
CSS_SELECTOR
or
等待其中一个条件您也不需要
if element
检查。如果预期的条件失败,它将抛出TimeoutException
。在相关问题 更多 >
编程相关推荐