在 Selenium 中找到一个 link 元素,它在其 href 中包含一个特定的词 python
Finding a link Element in Selenium which contains a specific word in its href with python
我是 windows 7 用户,使用 python 3.6.7 和 chromedriver 83.3
我喜欢使用 python 实现自动化,并且最近开始使用 使用 selenium 和 chromedriver 进行网络自动化。所以我对这个领域还很陌生。
我写了一个脚本,可以在给它一个搜索查询后(花几个小时在教程和文档阅读上)从互联网上下载任何软件。这是我的脚本:
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
import requests, bs4
query = input("Name for a windows software: ")
searchGoogle = "https://www.google.com/search?q="+"download "+str(query)+" for windows 7"
driver = webdriver.Chrome('chromedriver.exe')
links = []
website = requests.get(searchGoogle)
website_text = website.text
soup = bs4.BeautifulSoup(website_text,"lxml")
all_links = []
for link in soup.find_all("a"):
links.append(link.get("href"))
for link in links:
if "/url?q=" in link:
final = link.replace("/url?q=","")
final = final.split("&", 1)[0]
all_links.append(final)
for ss in all_links:
try:
driver.get(ss)
time.sleep(30)
download = driver.find_element_by_partial_link_text('Download')
download.click()
print(download.text)
quit()
except:
#print(download.href)
print("Not Found... Moving to next...")
continue
问题是有时它会点击某些显示“下载”的 link 并转到另一个询问“开始下载”的页面。
我知道当您下载 exe 文件时,要下载的 link 包含如下内容:“https://something.com/something/something.exe "
所以想问问有没有find_element_if_its_href_contains('.exe')
或者:任何仅单击其中包含“.exe”的 link 的内容。
我是这个社区的新手,如果您在我的问题中发现任何不符合 Whosebug 期望的内容,我深表歉意。在评论中询问我,我很乐意按照您建议的方式更改我的问题。
顺便说一句,提前致谢!
您可以创建一个 xpath 或 css 表达式来匹配网络元素 href
包含字符串“.exe”:
driver.find_element_by_xpath("//*[contains(@href,'.exe')]")
#or
driver.find_element_by_css_selector("[href*='.exe']")
我是 windows 7 用户,使用 python 3.6.7 和 chromedriver 83.3 我喜欢使用 python 实现自动化,并且最近开始使用 使用 selenium 和 chromedriver 进行网络自动化。所以我对这个领域还很陌生。
我写了一个脚本,可以在给它一个搜索查询后(花几个小时在教程和文档阅读上)从互联网上下载任何软件。这是我的脚本:
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
import requests, bs4
query = input("Name for a windows software: ")
searchGoogle = "https://www.google.com/search?q="+"download "+str(query)+" for windows 7"
driver = webdriver.Chrome('chromedriver.exe')
links = []
website = requests.get(searchGoogle)
website_text = website.text
soup = bs4.BeautifulSoup(website_text,"lxml")
all_links = []
for link in soup.find_all("a"):
links.append(link.get("href"))
for link in links:
if "/url?q=" in link:
final = link.replace("/url?q=","")
final = final.split("&", 1)[0]
all_links.append(final)
for ss in all_links:
try:
driver.get(ss)
time.sleep(30)
download = driver.find_element_by_partial_link_text('Download')
download.click()
print(download.text)
quit()
except:
#print(download.href)
print("Not Found... Moving to next...")
continue
问题是有时它会点击某些显示“下载”的 link 并转到另一个询问“开始下载”的页面。
我知道当您下载 exe 文件时,要下载的 link 包含如下内容:“https://something.com/something/something.exe "
所以想问问有没有find_element_if_its_href_contains('.exe') 或者:任何仅单击其中包含“.exe”的 link 的内容。
我是这个社区的新手,如果您在我的问题中发现任何不符合 Whosebug 期望的内容,我深表歉意。在评论中询问我,我很乐意按照您建议的方式更改我的问题。
顺便说一句,提前致谢!
您可以创建一个 xpath 或 css 表达式来匹配网络元素 href
包含字符串“.exe”:
driver.find_element_by_xpath("//*[contains(@href,'.exe')]")
#or
driver.find_element_by_css_selector("[href*='.exe']")