如何让驱动程序导航到 selenium python 中的新页面

How do I make the driver navigate to new page in selenium python

我正在尝试使用 selenium 和 python.

编写一个脚本来自动化 Linkedin 上的求职申请

步骤简单:

  1. 打开LinkedIn页面,输入id密码登录
  2. 打开 https://linkedin.com/jobs and enter the search keyword and location and click search(directly opening links like https://www.linkedin.com/jobs/search/?geoId=101452733&keywords=python&location=Australia 加载时卡住,可能是由于缺少上一页的一些 post 信息)
  3. 点击打开求职页面,但这似乎没有更新驱动程序,因为它仍在上一页搜索。
    import selenium
    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from bs4 import BeautifulSoup
    import pandas as pd
    import yaml
    
    driver = webdriver.Chrome("/usr/lib/chromium-browser/chromedriver")
    
    url = "https://linkedin.com/"
    driver.get(url)
    content = driver.page_source
    stream = open("details.yaml", 'r')
    details = yaml.safe_load(stream)
    
    def login():
        username = driver.find_element_by_id("session_key")
        password = driver.find_element_by_id("session_password")
        username.send_keys(details["login_details"]["id"])
        password.send_keys(details["login_details"]["password"])
        driver.find_element_by_class_name("sign-in-form__submit-button").click()
    
    
    def get_experience():
        return "1%C22"
    
    login()
    
    jobs_url = f'https://www.linkedin.com/jobs/'
    driver.get(jobs_url)
    
    keyword = driver.find_element_by_xpath("//input[starts-with(@id, 'jobs-search-box-keyword-id-ember')]")
    location = driver.find_element_by_xpath("//input[starts-with(@id, 'jobs-search-box-location-id-ember')]")
    keyword.send_keys("python")
    location.send_keys("Australia")
    driver.find_element_by_xpath("//button[normalize-space()='Search']").click()
    
    WebDriverWait(driver, 10)
    
    # content = driver.page_source
    # soup = BeautifulSoup(content)
    # with open("a.html", 'w') as a:
    #     a.write(str(soup))
    
    print(driver.current_url)

driver.current_url returns https://linkedin.com/jobs/ instead of https://www.linkedin.com/jobs/search/?geoId=101452733&keywords=python&location=Australia 应该的。我试图将内容打印到一个文件中,它确实来自以前的工作页面而不是来自搜索页面。我还尝试从页面中搜索元素,例如体验和简单应用按钮,但搜索结果为未找到错误。

我不确定为什么这不起作用。

有什么想法吗?提前致谢

更新

如果尝试直接打开 https://www.linkedin.com/jobs/search/?f_AL=True&f_E=2&keywords=python&location=Australia but not https://www.linkedin.com/jobs/search/?f_AL=True&f_E=1%2C2&keywords=python&location=Australia

之类的东西,它会起作用

这两个链接的区别在于,其中一个只取一个经验值,而另一个取两个值。这意味着它可能不是 post 值问题。

您在单击搜索按钮后立即获取并打印当前 URL,在页面根据从服务器收到的响应更改之前。
这就是为什么它输出 https://linkedin.com/jobs/ 而不是 https://www.linkedin.com/jobs/search/?geoId=101452733&keywords=python&location=Australia.
WebDriverWait(driver, 10)wait = WebDriverWait(driver, 20) 不会像 time.sleep(10) 那样造成任何类型的延迟。
wait = WebDriverWait(driver, 20)只实例化一个wait对象,WebDriverWait模块的实例/class