如何等待硒python中的元素可用 [英] How to wait until element is available in selenium python

查看:58
本文介绍了如何等待硒python中的元素可用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Selenium python编写脚本,但是有一个问题,我试图找到解决方案,但是我找不到一个对我有帮助的解决方案.这是代码

I am writing script using selenium python but there is problem i have tried to find solution but i can not find one that was helpful to me. here is the code

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import unittest
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

class sulekhastart(unittest.TestCase):

    def setUp(self):
        self.driver = webdriver.Firefox()

    def test_parse_contact_urls_and_go_to_next_page(self):

        pagenumber = 'Page'

        #assign WEBDRIVER to local webdriver
        driver = self.driver

        #Website open by below url
        driver.get("http://www.sulekha.com/ac-dealers/bangalore")
        self.assertIn("Sulekha Bangalore", driver.title)

        #close the lightbox thnat appears at the firsttime load of page
        startlightbox = driver.find_element_by_xpath('//a[@class="lcf-close"]')
        startlightbox.click()

        while True:

            #get the page number
            pageno = driver.find_element_by_xpath('//li[@id="numberPage"]/strong')
            print pageno.text
            print pagenumber

            #check if page same as last page or not
            if str(pageno.text) != pagenumber:

                pagenumber = str(pageno.text)

                businessname = driver.find_elements_by_xpath('//li/div/div[@class="busi-name"]/h3/a')
                records = len(businessname)

                #print all data that are available on the webpage
                for i in range(0,records):
                    print businessname[i].get_attribute('href')
                    print businessname[i].text

                nextpage = driver.find_element_by_xpath('//li[@id="nextPage"]')
                nextpage.click()
            else:
                print 'This is last page all data is scraped change url and get another data'
                break

            element = WebDriverWait(driver, 10).until_not(EC.presence_of_element_located((By.XPATH, "/html/body/div/div/svg")))

    def tearDown(self):
        self.driver.close()
        print 'page not be closed'

if __name__ == "__main__":
    unittest.main()

我想在单击下一步按钮后等待脚本,直到By.XPATH, "/html/body/div/div/svg"该元素从DOM或页面源中消失,然后等待3秒钟之后

and i want to wait script after click on the next button until By.XPATH, "/html/body/div/div/svg" this element gone from DOM or page source and then after wait until 3 seconds

推荐答案

andersson 注释

替换

element = WebDriverWait(driver, 10).until_not(
            EC.presence_of_element_located((
              By.XPATH, "/html/body/div/div/svg")))

使用

element = WebDriverWait(driver, 10).until_not(
            EC.presence_of_element_located((
              By.XPATH, "/html/body/div/div/*[name()='svg']")))

解决了问题

这篇关于如何等待硒python中的元素可用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆