在groovy课堂上,我走了一步:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
browser = webdriver.Chrome("/ProgramData/chocolatey/bin/chromedriver.exe")
browser.get("https://rotogrinders.com/projected-stats/mlb-hitter?site=fanduel")
# Wait 20 seconds for page to load
timeout = 20
try:
WebDriverWait(browser, timeout).until(EC.visibility_of_element_located((By.CLASS_NAME, 'player-popup')))
except TimeoutException:
print("Timed out waiting for page to load")
browser.quit()
# find_elements_by_xpath returns an array of selenium objects.
players_info = []
players = browser.find_elements_by_css_selector('div.player')
for player in players:
link = player.find_element_by_class_name('player-popup')
players_info.append(link.get_attribute('href'))
但是,每次我在管道上运行此命令时,都会收到一条错误消息:
def mergedBranch = steps.sh label:"Get the latest merged branch", script: """
declare branch
for branch in ${all_merged_branches};
do
merged_branch=$branch;
echo $merged_branch
break;
done
""", returnStdout: true
如果我更改脚本以使用三重单引号,则不会出现此错误,但是我不能使用Groovy的字符串插值,插值仅在双引号字符串内发生。我该怎么办?
答案 0 :(得分:0)
问题在于,所有变量在双引号中都由jenkins求值。如果未在环境中定义所有变量,则只需转义branch和merged_branch变量,即\$branch
和'\ $ merged_branch`
如果环境变量中存在all_merged_branches
,则只需将步骤重写为
def mergedBranch = steps.sh label:"Get the latest merged branch", script: '''
declare branch
for branch in ${all_merged_branches};
do
merged_branch=$branch;
echo $merged_branch
break;
done
''', returnStdout: true