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 以下是步骤:
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']"))))