想转行的菜鸟 2024-07-21 10:49 采纳率: 75%
浏览 5

用Selenium定位到百度搜索页指定位置



driver.get("https://www.baidu.com")
wait = WebDriverWait(driver, 15)
inputTag = wait.until(EC.element_to_be_clickable((By.ID, "kw")))
inputTag.send_keys("秋叶原电缆")
searchButton = driver.find_element(By.ID, "su")
searchButton.click()
#抓取秋叶原的信息
temp = driver.find_element(By.XPATH,'//div[@has-tts="false"]//h3//a//em')
input("按回车就退出")
driver.quit()

在Python里面用Selenium 搜索秋叶原电缆,无法正确的定位到,想要的地方 ,麻烦各位指教,谢谢

img

不能使用 href来定位,因为每个浏览器加载 出来的链接不一样

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2024-07-21 10:49
    关注

    以下内容由AIGC及阿里嘎多学长共同生成、有用望采纳:


    在使用Selenium自动化测试工具进行网页操作时,确实需要考虑到定位元素的稳定性和准确性。针对您提出的问题,以下是一些建议和代码示例,希望能帮助您解决问题:

    1. 定位搜索框:您已经使用了ID定位搜索框,这是一个很好的方法。如果需要更通用的定位,可以考虑使用name属性或者CSS选择器。
    inputTag = wait.until(EC.element_to_be_clickable((By.NAME, "wd")))
    
    1. 定位搜索按钮:同样,您已经使用了ID定位搜索按钮。确保按钮元素加载完成,可以使用以下代码:
    searchButton = wait.until(EC.element_to_be_clickable((By.ID, "su")))
    
    1. 正确定位搜索结果:您提供的XPath定位方法可能因为页面结构的变化而不稳定。可以考虑使用更通用的XPath或CSS选择器。例如,使用类名或者文本内容进行定位。
    # 使用类名定位
    temp = driver.find_element(By.XPATH, '//div[@class="c-container"]//h3//a//em')
    
    # 或者使用文本内容定位
    temp = wait.until(EC.element_to_be_clickable((By.XPATH, '//em[contains(text(), "秋叶原")]')))
    
    1. 处理动态加载的内容:您已经使用了WebDriverWait来等待元素可点击,这是正确的做法。确保使用显式等待而不是隐式等待,因为显式等待可以提供更灵活的等待条件。
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    # 示例:等待某个元素出现
    element = wait.until(EC.presence_of_element_located((By.XPATH, '//某个XPath定位')))
    
    1. 避免使用不稳定的定位器:您已经意识到使用href属性可能不稳定。确实,应该避免依赖于可能会变化的属性。使用更稳定的方法,如文本内容、类名或ID。

    最后,您的代码示例中有一个input("按回车就退出"),这会导致程序暂停等待用户输入,这在自动化脚本中通常是不必要的。如果您的目的是让程序在抓取信息后退出,可以考虑使用sys.exit()来替代。

    请注意,由于网页结构可能会变化,您可能需要根据实际情况调整XPath或CSS选择器。同时,确保您的Selenium WebDriver版本与浏览器版本兼容,以避免不必要的兼容性问题。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月21日

悬赏问题

  • ¥15 pcl运行在qt msvc2019环境运行效率低于visual studio 2019
  • ¥15 MAUI,Zxing扫码,华为手机没反应。可提高悬赏
  • ¥15 求帮看看那里的问题ssh项目报错
  • ¥15 python运行报错 ModuleNotFoundError: No module named 'torch'
  • ¥100 华为手机私有App后台保活
  • ¥15 sqlserver中加密的密码字段查询问题
  • ¥20 有谁能看看我coe文件到底哪儿有问题吗?
  • ¥20 我的这个coe文件到底哪儿出问题了
  • ¥15 matlab使用自定义函数时一直报错输入参数过多
  • ¥15 设计一个温度闭环控制系统