selenium 使用WebDriverWait等待条件正确

[Test]
        public void Do()
        {
            int counter = 1;
            //显示等待,用10s读取元素,如果读取不到将抛出异常,每500ms读取一次。  
            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
            bool flag = wait.Until<bool>((d) =>
            {
                Console.WriteLine(counter.ToString());
                counter++;
                return counter == 5;
            });
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果您使用Selenium获取的网页源码不正确,可能有以下几种原因: 1. 网页动态加载 如果网页内容是通过JavaScript动态加载的,则在Selenium获取网页源码时可能只能获取到部分内容。这时,您可以使用Selenium的`execute_script`方法来执行JavaScript代码,以获取完整的网页源码。例如: ``` from selenium import webdriver driver = webdriver.Chrome() driver.get("http://www.example.com") html = driver.execute_script("return document.documentElement.outerHTML") print(html) ``` 2. 网页编码问题 如果网页编码与Selenium默认编码不同,则获取的网页源码可能会出现乱码。您可以尝试指定网页编码并重新获取网页源码。例如: ``` from selenium import webdriver driver = webdriver.Chrome() driver.get("http://www.example.com") source = driver.page_source.encode('utf-8') print(source.decode('utf-8')) ``` 3. 网页访问速度过慢 如果网页访问速度过慢,可能会导致Selenium获取的网页源码不完整或不正确。您可以尝试增加获取网页源码的等待时间,以确保网页完全加载。例如: ``` from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() driver.get("http://www.example.com") wait = WebDriverWait(driver, 10) element = wait.until(EC.presence_of_element_located((By.TAG_NAME, "body"))) html = driver.page_source.encode('utf-8') print(html.decode('utf-8')) ``` 在上面的代码中,我们使用了`WebDriverWait`类来等待网页元素的出现,以确保网页已经完全加载。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值