Javascript Python-在单击使用Selenium之前如何在源代码中编辑href属性

Javascript Python-在单击使用Selenium之前如何在源代码中编辑href属性,javascript,python,selenium,selenium-webdriver,setattribute,Javascript,Python,Selenium,Selenium Webdriver,Setattribute,我有一个项目,我总是需要更改相同的值(删除它们): 到 及 到 如果您使用的是Python3+Selenium 以下是步骤: 使用Get_属性()获取此web元素的href 使用“拆分”或“替换”复制链接 由于我们无法立即使用JS函数setAttribute,请尝试执行脚本()更改href的web元素值,然后单击 检查功能描述 其想法是将具有新URL值的元素设置为args输入,并通过编写带有setAttribute的js函数来执行click,如下所示: execute_脚本(“参数[0].set

我有一个项目,我总是需要更改相同的值(删除它们):


如果您使用的是Python3+Selenium

以下是步骤:

  • 使用Get_属性()获取此web元素的href
  • 使用“拆分”或“替换”复制链接
  • 由于我们无法立即使用JS函数setAttribute,请尝试执行脚本()更改href的web元素值,然后单击
  • 检查功能描述

    其想法是将具有新URL值的元素设置为args输入,并通过编写带有setAttribute的js函数来执行click,如下所示:

    execute_脚本(“参数[0].setAttribute('href','{new URL}')。单击()”,目标_元素);
    
    您无需将修改后的URL注入页面上的A标记即可完成此操作。您只需抓取URL,使用
    urllib.parse
    修改它,然后导航到修改后的URL即可。在下面的代码中,我使用
    urllib.parse
    解压URL的各个部分,进行所需的更改,然后重新组装URL

    from urllib.parse import urlparse, parse_qs, urlencode, urlunparse
    
    old_url = 'http:///www.website.com/get_audio/?session_token=6355f60252138cfd6.7872112701&analytics_tier=undefined&r=us-east-1&game=0&language=de&d=1'
    o = list(urlparse(old_url))
    q = parse_qs(o[4])
    q['language'] = 'en'
    del(q['d'])
    o[4] = urlencode(q, doseq=True)
    new_url = urlunparse(o)
    print(new_url)
    driver.get(new_url)
    

    更改
    de&;d=1
    属性的
    href
    部分作为
    en
    您需要为位于()的元素的
    可见性诱导,并且您可以使用以下任一项:

    • 使用
      CSS\u选择器

      element = WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "a[href^='http:///www.website.com/get_audio'][name='audio-download']")))
      browser.execute_script("arguments[0].setAttribute('href','http:///www.website.com/get_audio/?session_token=6355f60252138cfd6.7872112701&analytics_tier=undefined&r=us-east-1&game=0&language=en')", element)
      
      element = WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "a[href^='http:///www.website.com/get_audio'][name='audio-download']")))
      browser.execute_script("arguments[0].setAttribute('target','')", element)
      
    • 使用
      XPATH
      并在一行中:

      browser.execute_script("arguments[0].setAttribute('href','http:///www.website.com/get_audio/?session_token=6355f60252138cfd6.7872112701&analytics_tier=undefined&r=us-east-1&game=0&language=en')", WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.XPATH, "//a[@name='audio-download' and text()='Geräusch als Audio-Datei herunterladen']"))))
      
      browser.execute_script("arguments[0].setAttribute('target','')", WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.XPATH, "//a[@name='audio-download' and text()='Geräusch als Audio-Datei herunterladen']"))))
      
    要将属性
    target=“\u blank”
    更改为
    target=“
    ,您需要对位于()的元素的
    可见性进行归纳,您可以使用以下任一项:

    • 使用
      CSS\u选择器

      element = WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "a[href^='http:///www.website.com/get_audio'][name='audio-download']")))
      browser.execute_script("arguments[0].setAttribute('href','http:///www.website.com/get_audio/?session_token=6355f60252138cfd6.7872112701&analytics_tier=undefined&r=us-east-1&game=0&language=en')", element)
      
      element = WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "a[href^='http:///www.website.com/get_audio'][name='audio-download']")))
      browser.execute_script("arguments[0].setAttribute('target','')", element)
      
    • 使用
      XPATH
      并在一行中:

      browser.execute_script("arguments[0].setAttribute('href','http:///www.website.com/get_audio/?session_token=6355f60252138cfd6.7872112701&analytics_tier=undefined&r=us-east-1&game=0&language=en')", WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.XPATH, "//a[@name='audio-download' and text()='Geräusch als Audio-Datei herunterladen']"))))
      
      browser.execute_script("arguments[0].setAttribute('target','')", WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.XPATH, "//a[@name='audio-download' and text()='Geräusch als Audio-Datei herunterladen']"))))
      

    工具书类 您可以在以下内容中找到一些相关的详细讨论:


    在哪里换车?发布您现有的代码。我们甚至不知道您使用的是什么语言。您只发布了一个HTML标记。标题是:Python和我添加的标记没有像我发布的那样更改:剪切,删除。。。因此,使用python时,我需要从HTMl源代码中删除这些值。您还将其标记为
    javascript
    selenium
    。您的问题中也没有Python代码。先看。
    browser.execute_script("arguments[0].setAttribute('target','')", WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.XPATH, "//a[@name='audio-download' and text()='Geräusch als Audio-Datei herunterladen']"))))