Python自动化测试的一个小问题

刚接触自动化测试,不是很懂,请问这里为什么报错,刚打开网页就马上闪退了

img

img


""" selenium 4 旧版写法"""
""" 从 selenium 导入 webdriver 包进行元素定位"""
from selenium import webdriver
 
""" 
注意:* 需小写字母,且用于括号外有连接符,用于括号内无连接符:
写法 1 :find_element_by_*("变量值") ;find_elements_by_*("变量值")
写法 2 :find_element(by = "*", value = "变量值") ;find_elements(by = "*", value = "变量值")
""" 
 
# 示例:使用 tag name 定位单个元素
find_element_by_tag_name("tag name 值") 
find_element(by = "tag name", value = "tag name 值")
 
# 示例:使用 tag name 定位多个元素
find_elements_by_tag_name("tag name 值") 
find_elements(by = "tag name", value = "tag name 值")

新版是这样的

""" selenium 4 新版写法"""
""" 从 selenium 导入 webdriver 的 By 包进行元素定位"""
from selenium import webdriver
from selenium.webdriver.common.by import By
 
"""
注意:* 需大写字母且有连接符:
写法 1 :find_element(By.*,"变量值") ;find_elements(By.*,"变量值")
写法 2 :find_element(by = By.*, value = "变量值") ;find_elements(by = By.*, value = "变量值")
"""
 
# 示例:使用 tag name 定位单个元素
find_element(By.TAG_NAME,"sb_form_q")
find_element(by = By.TAG_NAME, value = "sb_form_q")
 
# 示例:使用 tag name 定位多个元素
find_elements(By.TAG_NAME,"sb_form_q")
find_elements(by = By.TAG_NAME, value = "sb_form_q")

示例

from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
# id
driver.find_element(By.ID, "username")
# name
driver.find_element(By.NAME, "keyword")
# class name
driver.find_element(By.CLASS_NAME, "login_btn")
# tag_name
driver.find_element(By.TAG_NAME, "select")
# link_text
driver.find_element(By.LINK_TEXT, "进入商城购物")
# partial_link_text
driver.find_element(By.PARTIAL_LINK_TEXT, "人资")
# xpath
driver.find_element(By.XPATH, "/html/body/div[3]/div[2]/div[3]/div/div[1]/a/img")
# css_selector
driver.find_element(By.CSS_SELECTOR, '[value="1"]')

现在的写法变了


from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.edge.options import Options

url='https://www.baidu.com'
options = Options()
driver = webdriver.Edge(options=options)
driver.implicitly_wait(10)
driver.get(url)
driver.find_element(By.ID,'kw').send_keys("Selenium")
driver.find_element(By.ID,'su').click()

【以下回答由 GPT 生成】

我可以尝试帮助解决这个问题。从问题描述中可以看出,你在使用Python编写的自动化测试脚本时,打开网页后会出现闪退的情况。这个问题可能与你的测试环境、代码逻辑或者网页本身相关。解决这个问题可以按照以下步骤进行:

  1. 确保测试环境正确:首先,确认你的Python环境已正确配置,并且相关的库也已正确安装,特别是selenium和WebDriver。你可以在命令行中运行python --versionpip freeze来检查Python和库的版本。请确保你使用的是最新版本。

  2. 检查代码逻辑:检查你的自动化测试脚本的代码逻辑是否正确。可能是因为代码中的错误导致了闪退。请确保你在打开网页的代码之前已经初始化了WebDriver,并且其他操作都处在WebDriver可用状态下。可以尝试在代码中增加异常处理,以便捕捉可能的错误并提供更详细的错误信息。

  3. 检查网页本身:尝试打开该网页时发生闪退,可能是网页本身存在问题。可以使用其他常规浏览器手动尝试打开该网页,确认它是否能够正常加载和显示。如果手动打开网页没有问题,那么可以尝试加载其他简单的网页,看是否仍然出现闪退的情况。如果是特定网页出现问题,可能需要进一步调查该网页的加载和渲染方式,确保自动化测试能够正确处理。

  4. 添加等待:有时候,网页加载可能需要一些时间。你可以尝试在打开网页后加入适当的等待时间,以确保网页完全加载完成再进行后续操作。可以使用selenium提供的WebDriverWaitexpected_conditions来实现等待网页加载完成的功能。

下面是一个示例代码片段,演示如何添加等待来确保网页加载完成后再进行后续操作:

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

# 初始化WebDriver,启动浏览器
driver = webdriver.Chrome()

# 打开网页
driver.get('https://example.com')

# 等待网页加载完成(最多等待10秒)
wait = WebDriverWait(driver, 10)
wait.until(EC.presence_of_element_located((By.TAG_NAME, 'body')))

# 继续执行后续操作
# ...

# 关闭浏览器
driver.quit()

请注意,这只是一个示例代码,具体的等待时间和条件可能需要根据你的实际情况进行调整。

如果上述步骤都不能解决你的问题,我建议你提供更多细节,比如网页的具体URL、脚本的代码等,以便更好地帮助你解决问题。另外,你也可以在搜索引擎或者相关的技术社区中搜索类似的问题,看看是否其他人遇到过相似的情况并给出了解决方案。

希望这些信息能对你有所帮助。如果我对你的问题没有回答到位,或者你有其他问题,可以随时提问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^