Selenium成长之路-15设置等待时间

为了保证运行的脚本正常加载,我们需要的是设置等待时间,具体有以下几种:

sleep():设置固定等待时间,主要由time包提供,也可叫强制等待,

也就是说不管页面是否加载完成,都会等待这些时间。

代码如下:

 

# coding = utf-8
from selenium import  webdriver
import time
from selenium.webdriver.common.by import By
# from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
url = 'http://www.baidu.com'
driver.get(url)

#在百度输入框输入python
browser = driver.find_element(By.ID,'kw')
browser.send_keys("pythonn")



time.sleep(5)
driver.quit()

 

implicitly_wait():webdriver包提供的一个等待方法,也叫隐式等待,

 

隐式等待是设置了一个最长等待时间,如果规定时间内网页加载完成,则进行下一步,否则一直等到时间截止,再进行下一步。

代码如下:

 

# coding = utf-8
from selenium import  webdriver
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
url = 'http://www.baidu.com'
driver.get(url)

#在百度输入框输入python
browser = driver.find_element(By.ID,'kw')
inp=browser.send_keys("pythonn")
driver.implicitly_wait(3)

#删除一个n
browser.send_keys(Keys.BACK_SPACE)
driver.implicitly_wait(3)

#回车键
browser.send_keys(Keys.ENTER)
driver.implicitly_wait(10)

driver.quit()

 

WebDriverWait():同样也是 webdirver 提供的方法,也叫显示等待,

 

语法结构如下:

WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)

driver:webdriver.Chrome()   主要就是指webdriver的驱动程序

timeout:超时时间,默认单位是秒

poll_frequency:休眠时间的间隔时间,默认0.5秒

ignored_exceptions:超时后的异常信息,默认抛出NoSuchElementException异常

配合该类的until()和until_not()方法使用,详细如下:

until(method,message=''):调用该方法提供的驱动程序作为一个参数,直到返回值不为False

unitl_not(method,message=''):调用该方法提供的驱动程序作为一个参数,直到返回值为False

主要是:程序每个xx秒查看一次,如果条件成立,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException

代码如下:

 

# coding = utf-8
from selenium import  webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.Chrome()
url = 'http://www.baidu.com'
driver.get(url)

browser = driver.find_element(By.ID,'kw')

#设置现实等待,NoSuchElementException 可以不写
# WebDriverWait(driver,10,1).until(lambda  driver:browser)

try:
    WebDriverWait(driver,10,2,NoSuchElementException).until(lambda driver:browser)
    print("test pass")
except Exception as e:
    print("test file ",format(e))


driver.quit()

这里应用了一个新函数:lambda 表达式,也叫匿名函数,宗旨就是能一句话写完的代码不需要写两句话,把def函数简单化

不懂得可以看一下廖大大的Python教程:点击这里

一般在实际项目中,隐式等待使用的频率会更高一些,但是并不是说现实等待或者强制等待不会去使用。

所以具体怎么去使用以及使用什么方法,只要能保证脚本正常运行不出错,就是可行的。

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要设置Selenium的User-Agent需要使用如下方式: 1. 通过Selenium的webdriver对象,在启动浏览器之前设置User-Agent,如下所示: ``` from selenium import webdriver options = webdriver.ChromeOptions() options.add_argument("user-agent=your_useragent_here") driver = webdriver.Chrome(chrome_options=options) ``` 2. 直接在webdriver的get()方法中添加User-Agent,如下所示: ``` from selenium import webdriver user_agent = "your_useragent_here" url = "your_url_here" driver = webdriver.Chrome() driver.get("data:text/html,chromewebdata"+url+"#"+user_agent) ``` 这两种方式可以让Selenium模拟某个特定的User-Agent来访问网站。 ### 回答2: Selenium是一种流行的自动化测试框架,它允许开发人员使用多种语言编写测试用例,包括Python、Java、JavaScript等。 当我们使用Selenium自动化测试网站时,有时需要设置user-agent来模拟不同的客户端环境。user-agent是一个HTTP请求头,其中包含浏览器信息和操作系统信息等。通过设置user-agent,我们可以测试网站在不同浏览器和操作系统下的兼容性。 在Selenium设置user-agent的方法如下: 1. 首先,我们需要导入selenium包: ``` from selenium import webdriver from selenium.webdriver.chrome.options import Options ``` 2. 接着,我们需要创建一个ChromeOptions对象,并调用add_argument方法设置user-agent: ``` options = Options() options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3") ``` 这里我们设置的user-agent是Chrome浏览器在Windows 10操作系统下的信息。 3. 最后,我们创建一个ChromeDriver对象,并传入ChromeOptions对象: ``` driver = webdriver.Chrome(options=options) ``` 这样,我们就成功设置了user-agent,可以在浏览器中模拟各种客户端环境了。 需要注意的是,如果我们要在不同的测试用例中设置不同的user-agent,可以在每个用例中重新创建ChromeOptions对象并设置不同的user-agent,然后传递给对应的ChromeDriver对象。 ### 回答3: Selenium是一种流行的测试工具,可用于自动化测试Web应用程序。在测试过程中,我们可能需要通过改变用户代理来模拟不同的浏览器。用户代理是浏览器发送给服务器的字符串,它告诉服务器是哪种浏览器在访问网站。 在Selenium中,我们可以通过设置浏览器选项来更改用户代理。具体来说,我们需要创建一个浏览器选项对象,并设置它的"user-agent"属性为所需的用户代理字符串。 例如,以下是将Chrome浏览器的用户代理设置为Mozilla Firefox的示例代码: ``` from selenium import webdriver options = webdriver.ChromeOptions() options.add_argument('--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0') driver = webdriver.Chrome(chrome_options=options) ``` 在这个例子中,我们使用ChromeOptions类创建一个选项对象,并使用add_argument()方法将user-agent属性设置为Mozilla Firefox的用户代理字符串。然后,我们将选项对象传递给webdriver.Chrome()方法以创建Chrome浏览器实例。 需要注意的是,不同的浏览器有不同的用户代理字符串格式,我们需要根据所使用的浏览器来调整用户代理字符串的格式。通过这种方式,我们可以轻松地在Selenium设置用户代理,以测试Web应用程序在不同浏览器下的兼容性和表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Carl_奕然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值