webdriver.Chrome()打开浏览器访问网站 会弹验证码
时间: 2023-10-07 20:09:15 浏览: 87
如果您使用的网站需要进行验证码验证,那么在使用`webdriver.Chrome()`打开浏览器访问该网站时,通常会弹出验证码窗口。可以尝试通过以下方法来解决该问题:
1. 手动输入验证码:可以在浏览器中手动输入验证码,以通过验证。
2. 使用第三方验证码识别服务:可以使用一些第三方验证码识别服务,例如打码平台,来自动识别和输入验证码。
3. 禁用验证码验证:有些网站可能会提供禁用验证码验证的选项,您可以尝试查找该选项并将其禁用。
需要注意的是,绕过验证码验证可能会违反网站的使用协议和法律法规,使用时需谨慎。
相关问题
import pytest from selenium import webdriver from selenium.webdriver.chrome.service import Service as ChromeService from webdriver_manager.chrome import ChromeDriverManager # 封装自动下载对应浏览器驱动 # 谷歌浏览器 @pytest.fixture() def start_browser(self): driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install())) # 打开网页 driver.get("http://meikefresh.5istudy.online/") driver.maximize_window() yield driver driver.quit() from time import sleep import pytest from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from testcase.testusers.conftest import get_code from utils.log_util import logger from utils.mysql_util import db from utils.phone_number import random_phone_number class Testuser: def test_dws_001_register(self, browser_init): # #驱动并打开网页 # driver = Browser_driver().browser_init() #注册按钮跳转 driver.find_element(By.XPATH, "//*[@id='ECS_MEMBERZONE']/a[2]").click() phone_number = random_phone_number() #输入手机号 driver.find_element(By.ID, "jsRegMobile").send_keys(phone_number) #点击获取验证码并输入 driver.find_element(By.ID, "jsSendCode").click() driver.implicitly_wait(10) code = get_code(phone_number) driver.find_element(By.ID, "jsPhoneRegCaptcha").send_keys(code) #输入密码 driver.find_element(By.ID, "jsPhoneRegPwd").send_keys("125678") #点击注册按钮并登录 driver.find_element(By.ID, "jsMobileRegBtn").click() sleep(30)
根据您提供的代码,我注意到您在前置方法`start_browser`中使用了`yield`关键字来返回driver对象,并在后面使用了`driver.quit()`来关闭driver。但是在测试用例`test_dws_001_register`中,您使用了`browser_init`作为前置方法的名称,而不是`start_browser`。这可能是导致测试用例无法找到前置方法并且没有返回driver的原因。
请将测试用例中的前置方法名称修改为`start_browser`,这样pytest才能正确识别并执行该前置方法。修改后的代码如下所示:
```python
class Testuser:
def test_dws_001_register(self, start_browser):
driver = start_browser # 获取前置方法返回的driver对象
# 注册按钮跳转
driver.find_element(By.XPATH, "//*[@id='ECS_MEMBERZONE']/a[2]").click()
phone_number = random_phone_number()
# 输入手机号
driver.find_element(By.ID, "jsRegMobile").send_keys(phone_number)
# 点击获取验证码并输入
driver.find_element(By.ID, "jsSendCode").click()
driver.implicitly_wait(10)
code = get_code(phone_number)
driver.find_element(By.ID, "jsPhoneRegCaptcha").send_keys(code)
# 输入密码
driver.find_element(By.ID, "jsPhoneRegPwd").send_keys("125678")
# 点击注册按钮并登录
driver.find_element(By.ID, "jsMobileRegBtn").click()
sleep(30)
```
请注意,我还添加了一行代码`driver = start_browser`,以获取前置方法`start_browser`返回的driver对象,并在测试用例中使用该对象进行后续操作。
希望这可以解决您的问题!如果还有其他疑问,请随时提出。
import time from time import sleep from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.by import By from 类.厚沃宝.发票.发票登录页 import Hwblogin driver = webdriver.Chrome() driver.get('https://hwb-sit.newhopeleasing.com/SSO/channelSignOn?callbackUri=%2FprocessManage%2FincomingTransfer&openId=ojkrQ0qccdb1SqIQ0uuYCUcSP7j8&agentId=3586882d17d441cbba7890db112807e4&channelId=0001') driver.maximize_window() #设置隐式等待时间为10秒,如果系统找不到元素,可以等待10秒,超过10秒则抛出异常 driver.implicitly_wait(10) hwb = Hwblogin('13774268861','9999') hwb.Hwblogin(driver) sleep(3)
根据代码的上下文,这段代码的作用是使用 Selenium 自动化测试工具,打开一个网址,然后使用 `webdriver.Chrome()` 创建一个 Chrome 浏览器的实例,将窗口最大化,设置隐式等待时间为 10 秒,使用 `Hwblogin` 类中的 `Hwblogin` 方法登录指定网站,并且在登录成功后等待 3 秒。这段代码看起来没有明显的问题,但是需要确认 `Hwblogin` 类的实现是否正确,以及是否需要输入验证码等其他信息。
阅读全文